<强>,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中几种图片特效的处理的实现方法