成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android中圖像特效處理實(shí)例教程

移動(dòng)開發(fā) Android
Android中有很多圖片特效處理技巧,比如圓角、倒影,今天為大家分享一個(gè)實(shí)例,教程里共有縮放、圓角、倒影等幾種特效。

Android中有很多圖片特效處理技巧,比如圓角、倒影,今天為大家分享一個(gè)實(shí)例,本例主要是先獲取壁紙(getWallpaper()),然后對當(dāng)前壁紙的一些特效處理。

第一步:新建一個(gè)Android工程命名為ImageDemo,工程結(jié)構(gòu)如下:

第二步:新建一個(gè).java文件,命名為ImageUtil.java,在里面定義一些圖片處理方法,代碼如下:

  1. package com.android.tutor;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.Canvas;  
  4. import android.graphics.LinearGradient;  
  5. import android.graphics.Matrix;  
  6. import android.graphics.Paint;  
  7. import android.graphics.PixelFormat;  
  8. import android.graphics.PorterDuffXfermode;  
  9. import android.graphics.Rect;  
  10. import android.graphics.RectF;  
  11. import android.graphics.Bitmap.Config;  
  12. import android.graphics.PorterDuff.Mode;  
  13. import android.graphics.Shader.TileMode;  
  14. import android.graphics.drawable.Drawable;  
  15. public class ImageUtil { 
  16.  
  17. //放大縮小圖片  
  18. public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){  
  19. int width = bitmap.getWidth();  
  20. int height = bitmap.getHeight();  
  21. Matrix matrix = new Matrix();  
  22. float scaleWidht = ((float)w / width);  
  23. float scaleHeight = ((float)h / height);  
  24. matrix.postScale(scaleWidht, scaleHeight);  
  25. Bitmap newbmp = Bitmap.createBitmap(bitmap, 00, width, height, matrix, true);  
  26. return newbmp;  
  27. }  
  28. //將Drawable轉(zhuǎn)化為Bitmap  
  29. public static Bitmap drawableToBitmap(Drawable drawable){  
  30. int width = drawable.getIntrinsicWidth();  
  31. int height = drawable.getIntrinsicHeight();  
  32. Bitmap bitmap = Bitmap.createBitmap(width, height,  
  33. drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
  34. : Bitmap.Config.RGB_565);  
  35. Canvas canvas = new Canvas(bitmap);  
  36. drawable.setBounds(0,0,width,height);  
  37. drawable.draw(canvas);  
  38. return bitmap; 
  39.  
  40.  
  41. //獲得圓角圖片的方法  
  42. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){ 
  43.  
  44. Bitmapoutput = Bitmap.createBitmap(bitmap.getWidth(), bitmap  
  45. .getHeight(), Config.ARGB_8888);  
  46. Canvas canvas = new Canvas(output); 
  47.  
  48. final intcolor = 0xff424242;  
  49. final Paint paint = new Paint();  
  50. final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());  
  51. final RectF rectF = new RectF(rect); 
  52.  
  53. paint.setAntiAlias(true);  
  54. canvas.drawARGB(0000);  
  55. paint.setColor(color);  
  56. canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 
  57.  
  58. paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));  
  59. canvas.drawBitmap(bitmap, rect, rect, paint); 
  60.  
  61. returnoutput;  
  62. }  
  63. //獲得帶倒影的圖片方法  
  64. public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){  
  65. final int reflectionGap = 4;  
  66. int width = bitmap.getWidth();  
  67. int height = bitmap.getHeight(); 
  68.  
  69. Matrixmatrix = new Matrix();  
  70. matrix.preScale(1, -1); 
  71.  
  72. BitmapreflectionImage = Bitmap.createBitmap(bitmap,  
  73. 0, height/2, width, height/2, matrix, false); 
  74.  
  75. BitmapbitmapWithReflection = Bitmap.createBitmap(width, (height + height/2),Config.ARGB_8888); 
  76.  
  77. Canvascanvas = new Canvas(bitmapWithReflection);  
  78. canvas.drawBitmap(bitmap, 00null);  
  79. Paint deafalutPaint = new Paint();  
  80. canvas.drawRect(0, height,width,height + reflectionGap,  
  81. deafalutPaint); 
  82.  
  83. canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null); 
  84.  
  85. Paint paint= new Paint();  
  86. LinearGradient shader = new LinearGradient(0,  
  87. bitmap.getHeight(), 0, bitmapWithReflection.getHeight()  
  88. + reflectionGap, 0x70ffffff0x00ffffff, TileMode.CLAMP);  
  89. paint.setShader(shader);  
  90. // Set the Transfer mode to be porter duff and destination in  
  91. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  92. // Draw a rectangle using the paint with our linear gradient  
  93. canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()  
  94. + reflectionGap, paint); 
  95.  
  96. returnbitmapWithReflection;  
  97.  
  98. }  

第三步:修改main.xml布局文件,主要放了兩個(gè)ImageView控件,代碼如下:

  1. <?xmlversionxmlversion="1.0" encoding="utf-8"?>  
  2. <LinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"  
  3. android:orientation="vertical"  
  4. android:layout_width="fill_parent"  
  5. android:layout_height="fill_parent"  
  6. >  
  7. <ImageView  
  8. android:id="@+id/image01"  
  9. android:layout_width="wrap_content"  
  10. android:layout_height="wrap_content"  
  11. android:padding="10px"  
  12. />  
  13. <ImageView  
  14. android:id="@+id/image02"  
  15. android:layout_width="wrap_content"  
  16. android:layout_height="wrap_content"  
  17. android:padding="10px"  
  18. />  
  19. </LinearLayout>  

第四步:修改主核心程序,ImageDemo.java,代碼如下:

  1. package com.android.tutor;  
  2. import android.app.Activity;  
  3. import android.graphics.Bitmap;  
  4. import android.graphics.drawable.Drawable;  
  5. import android.os.Bundle;  
  6. import android.widget.ImageView;  
  7. public class Imagedemo extends Activity {  
  8. private ImageView mImageView01,mImageView02; 
  9.  
  10. public voidonCreate(Bundle savedInstanceState) {  
  11. super.onCreate(savedInstanceState);  
  12. setContentView(R.layout.main);  
  13. setupViews();  
  14.  
  15. private voidsetupViews(){  
  16. mImageView01 = (ImageView)findViewById(R.id.image01);  
  17. mImageView02 = (ImageView)findViewById(R.id.image02); 
  18.  
  19. //獲取壁紙返回值是Drawable  
  20. Drawable drawable = getWallpaper();  
  21. //將Drawable轉(zhuǎn)化為Bitmap  
  22. Bitmap bitmap = ImageUtil.drawableToBitmap(drawable);  
  23. //縮放圖片  
  24. Bitmap zoomBitmap = ImageUtil.zoomBitmap(bitmap, 100100);  
  25. //獲取圓角圖片  
  26. Bitmap roundBitmap = ImageUtil.getRoundedCornerBitmap(zoomBitmap, 10.0f);  
  27. //獲取倒影圖片  
  28. Bitmap reflectBitmap = ImageUtil.createReflectionImageWithOrigin(zoomBitmap);  
  29. //這里可以讓Bitmap再轉(zhuǎn)化為Drawable  
  30. // Drawable roundDrawable = new BitmapDrawable(roundBitmap);  
  31. // Drawable reflectDrawable = new BitmapDrawable(reflectBitmap);  
  32. // mImageView01.setBackgroundDrawable(roundDrawable);  
  33. // mImageView02.setBackgroundDrawable(reflectDrawable); 
  34.  
  35. mImageView01.setImageBitmap(roundBitmap);  
  36. mImageView02.setImageBitmap(reflectBitmap);  
  37.  
  38.  
  39. }  

第五步:運(yùn)行上述工程,查看效果如下:

責(zé)任編輯:徐川 來源: OSChina
相關(guān)推薦

2013-04-22 13:57:15

Android圖像特效

2014-08-26 11:46:46

QtAndroid實(shí)例教程

2009-09-18 11:44:05

Scala實(shí)例教程Kestrel

2010-08-17 11:02:45

DIV CSS實(shí)例教程

2019-06-17 15:25:17

expandunexpandLinux

2016-11-09 20:41:47

PHP圖片切片圖片壓縮

2011-07-21 17:00:59

iPhone UIWebView Status Cod

2009-09-08 14:18:35

NFS服務(wù)器

2011-07-25 16:03:47

XCode 編譯

2009-07-30 14:18:02

ASP.NET實(shí)例教程

2010-08-25 17:08:18

實(shí)例教程

2013-01-14 17:05:55

UCUI設(shè)計(jì)菜單欄

2013-07-25 14:44:48

sqlite實(shí)例教程iOS開發(fā)學(xué)習(xí)sqlite打造詞典

2010-06-18 15:55:47

UML建模

2013-08-15 09:14:55

2011-07-27 17:41:35

Objective-C Xcode

2010-06-29 16:53:48

UML實(shí)例教程

2009-11-02 09:14:51

ASP.NET MVC

2010-08-17 10:48:12

Div CSS實(shí)例

2024-10-10 15:51:50

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久国产精品午夜一区 | 久久久久国产精品 | 精品欧美一区二区久久久伦 | 久久精品一 | 亚洲综合在线视频 | 日韩在线综合 | 亚洲免费人成在线视频观看 | 97碰碰碰 | 欧美激情va永久在线播放 | 久久久久久久电影 | 久久久免费观看视频 | 一级看片免费视频囗交动图 | 成人国产精品久久久 | 亚洲性人人天天夜夜摸 | 正在播放国产精品 | 美女视频一区二区三区 | 亚洲成av人影片在线观看 | 狠狠色香婷婷久久亚洲精品 | aaaaaa大片免费看最大的 | 色婷婷精品 | 日韩在线不卡 | 国产精品自拍视频网站 | 国产精品久久久久无码av | 精品国产欧美在线 | 中文字幕亚洲视频 | 99re99| 日本综合在线观看 | jvid精品资源在线观看 | 色综合久久88色综合天天 | 日本a在线 | 日韩福利一区 | 久久久久久久av | 91成人免费 | 国产精品久久久久久久久久久久冷 | 午夜av毛片 | 欧美一级片a | 久久国产欧美一区二区三区精品 | 国产www在线 | www.操.com| 国产1区2区在线观看 | 精品人伦一区二区三区蜜桃网站 |