Android中几种图片特效的处理的实现方法

  

<强>,Android中几种图片特效的处理

  

这里有放大缩小图片,获得圆角图片,获得带倒影图片的几种方法及实现代码,

        包com.android.tutor;   进口android.graphics.Bitmap;   进口android.graphics.Canvas;   进口android.graphics.LinearGradient;   进口android.graphics.Matrix;   进口android.graphics.Paint;   进口android.graphics.PixelFormat;   进口android.graphics.PorterDuffXfermode;   进口android.graphics.Rect;   进口android.graphics.RectF;   进口android.graphics.Bitmap.Config;   进口android.graphics.PorterDuff.Mode;   进口android.graphics.Shader.TileMode;   进口android.graphics.drawable.Drawable;   公开课ImageUtil {//放大缩小图片   公共静态位图zoomBitmap(位图的位图,int, int h) {   int宽度=bitmap.getWidth ();   int高度=bitmap.getHeight ();   矩阵矩阵=new矩阵();   浮动scaleWidht=((浮动)w/宽度);   浮动scaleHeight=((浮动)h/高度);   矩阵。postScale (scaleWidht scaleHeight);   位图newbmp=位图。createBitmap(位图,0,0,宽度,高度,矩阵,true);   返回newbmp;   }//将可拉的转化为位图   公共静态位图drawableToBitmap(可拉的可拉的){   int宽度=drawable.getIntrinsicWidth ();   int高度=drawable.getIntrinsicHeight ();   位图的位图=位图。createBitmap(宽度、高度,   drawable.getOpacity () !=PixelFormat。不透明& # 63;Bitmap.Config.ARGB_8888   :Bitmap.Config.RGB_565);   帆布画布=新画布(位图);   drawable.setBounds(0, 0,宽度、高度);   drawable.draw(画布);   返回位图;      }//获得圆角图片的方法   公共静态位图getRoundedCornerBitmap(位图的位图,浮子roundPx) {      位图输出=Bitmap.createBitmap (bitmap.getWidth(),位图   .getHeight (), Config.ARGB_8888);   帆布画布=新画布(输出);      最后一个int颜色=0 xff424242;   最终涂漆=new ();   最后一个矩形矩形=new矩形(0,0,bitmap.getWidth (), bitmap.getHeight ());   最后RectF RectF=new RectF(矩形);      paint.setAntiAlias(真正的);   画布。drawARGB (0, 0, 0, 0);   paint.setColor(颜色);   画布。drawRoundRect (rectF, roundPx、roundPx、油漆);      油漆。setXfermode(新PorterDuffXfermode (Mode.SRC_IN));   画布。drawBitmap(位图,矩形,矩形、油漆);      返回输出;   }//获得带倒影的图片方法   公共静态位图createReflectionImageWithOrigin(位图的位图){   最后一个int reflectionGap=4;   int宽度=bitmap.getWidth ();   int高度=bitmap.getHeight ();      矩阵矩阵=new矩阵();   矩阵。预分频(1,1);      位图reflectionImage=Bitmap.createBitmap(位图,/2 0,高度,宽度,高度/2,矩阵,假);      位图bitmapWithReflection=位图。createBitmap(宽度、高度(高度+/2)、Config.ARGB_8888);      帆布画布=新画布(bitmapWithReflection);   画布。drawBitmap(位图,0,0,null);   涂deafalutPaint=new ();   画布。绘制矩形(0,高度,宽度,高度+ reflectionGap,   deafalutPaint);      画布。drawBitmap (reflectionImage, 0,身高+ reflectionGap, null);      涂漆=new ();   LinearGradient材质=new LinearGradient (0,   bitmap.getHeight (), 0, bitmapWithReflection.getHeight ()   + reflectionGap 0 x70ffffff 0 x00ffffff TileMode.CLAMP);   paint.setShader(材质);//设置波特达夫和目的地的传输模式   油漆。setXfermode(新PorterDuffXfermode (Mode.DST_IN));//画一个矩形使用油漆与线性渐变   画布。绘制矩形(0,高度,宽度,bitmapWithReflection.getHeight ()   + reflectionGap、油漆);      返回bitmapWithReflection;   }      }   之前      

修改主要。xml布局文件,主要放了两个ImageView控件,代码如下:
  

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android "   android:取向=按怪薄?   android: layout_width="宽和"   android: layout_height="宽和"   比;   & lt; ImageView   android: id=癅 + id/image01”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android:填充=" 10 px”/比;   & lt; ImageView   android: id=癅 + id/image02”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android:填充=" 10 px”/比;   & lt;/LinearLayout>   之前      

修改主核心程序,ImageDemo。Java,代码如下:

Android中几种图片特效的处理的实现方法