Android中图像特效处理实例教程

Android中有很多图片特效处理技巧,比如圆角、倒影,今天为大家分享一个实例,本例主要是先获取壁纸(getWallpaper()),然后对当前壁纸的一些特效处理。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站制作、漳州网络推广、小程序开发、漳州网络营销、漳州企业策划、漳州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供漳州建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

第一步:新建一个Android工程命名为ImageDemo,工程结构如下:

第二步:新建一个.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, 0, 0, width, height, matrix, true);  
  26. return newbmp;  
  27. }  
  28. //将Drawable转化为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(0, 0, bitmap.getWidth(), bitmap.getHeight());  
  51. final RectF rectF = new RectF(rect); 
  52.  
  53. paint.setAntiAlias(true);  
  54. canvas.drawARGB(0, 0, 0, 0);  
  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, 0, 0, null);  
  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, 0x70ffffff, 0x00ffffff, 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布局文件,主要放了两个ImageView控件,代码如下:

 
 
 
  1.   
  2. android:orientation="vertical"  
  3. android:layout_width="fill_parent"  
  4. android:layout_height="fill_parent"  
  5. >  
  6. android:id="@+id/image01"  
  7. android:layout_width="wrap_content"  
  8. android:layout_height="wrap_content"  
  9. android:padding="10px"  
  10. />  
  11. android:id="@+id/image02"  
  12. android:layout_width="wrap_content"  
  13. android:layout_height="wrap_content"  
  14. android:padding="10px"  
  15. />  
  16.   

第四步:修改主核心程序,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转化为Bitmap  
  22. Bitmap bitmap = ImageUtil.drawableToBitmap(drawable);  
  23. //缩放图片  
  24. Bitmap zoomBitmap = ImageUtil.zoomBitmap(bitmap, 100, 100);  
  25. //获取圆角图片  
  26. Bitmap roundBitmap = ImageUtil.getRoundedCornerBitmap(zoomBitmap, 10.0f);  
  27. //获取倒影图片  
  28. Bitmap reflectBitmap = ImageUtil.createReflectionImageWithOrigin(zoomBitmap);  
  29. //这里可以让Bitmap再转化为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. }  

第五步:运行上述工程,查看效果如下:

网站名称:Android中图像特效处理实例教程
文章转载:http://www.36103.cn/qtweb/news32/18032.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联