Android中几种图像特效处理方法小结.docx
《Android中几种图像特效处理方法小结.docx》由会员分享,可在线阅读,更多相关《Android中几种图像特效处理方法小结.docx(8页珍藏版)》请在冰豆网上搜索。
Android中几种图像特效处理方法小结
大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.
废话少说了,直接讲解今天的实例,本例主要是先获取壁纸(getWallpaper()),然后对当前壁纸的一些特效处理.大家按步骤一步一步来:
第一步:
新建一个Android工程命名为ImageDemo,工程结构如下:
第二步:
新建一个.java文件,命名为ImageUtil.java,在里面定义一些图片处理方法,代码如下:
viewplaincopytoclipboardprint?
packagecom.android.tutor;
importandroid.graphics.Bitmap;
importandroid.graphics.Canvas;
importandroid.graphics.LinearGradient;
importandroid.graphics.Matrix;
importandroid.graphics.Paint;
importandroid.graphics.PixelFormat;
importandroid.graphics.PorterDuffXfermode;
importandroid.graphics.Rect;
importandroid.graphics.RectF;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.PorterDuff.Mode;
importandroid.graphics.Shader.TileMode;
importandroid.graphics.drawable.Drawable;
publicclassImageUtil{
//放大缩小图片
publicstaticBitmapzoomBitmap(Bitmapbitmap,intw,inth){
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix=newMatrix();
floatscaleWidht=((float)w/width);
floatscaleHeight=((float)h/height);
matrix.postScale(scaleWidht,scaleHeight);
Bitmapnewbmp=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);
returnnewbmp;
}
//将Drawable转化为Bitmap
publicstaticBitmapdrawableToBitmap(Drawabledrawable){
intwidth=drawable.getIntrinsicWidth();
intheight=drawable.getIntrinsicHeight();
Bitmapbitmap=Bitmap.createBitmap(width,height,
drawable.getOpacity()!
=PixelFormat.OPAQUE?
Bitmap.Config.ARGB_8888
:
Bitmap.Config.RGB_565);
Canvascanvas=newCanvas(bitmap);
drawable.setBounds(0,0,width,height);
drawable.draw(canvas);
returnbitmap;
}
//获得圆角图片的方法
publicstaticBitmapgetRoundedCornerBitmap(Bitmapbitmap,floatroundPx){
Bitmapoutput=Bitmap.createBitmap(bitmap.getWidth(),bitmap
.getHeight(),Config.ARGB_8888);
Canvascanvas=newCanvas(output);
finalintcolor=0xff424242;
finalPaintpaint=newPaint();
finalRectrect=newRect(0,0,bitmap.getWidth(),bitmap.getHeight());
finalRectFrectF=newRectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0,0,0,0);
paint.setColor(color);
canvas.drawRoundRect(rectF,roundPx,roundPx,paint);
paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap,rect,rect,paint);
returnoutput;
}
//获得带倒影的图片方法
publicstaticBitmapcreateReflectionImageWithOrigin(Bitmapbitmap){
finalintreflectionGap=4;
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix=newMatrix();
matrix.preScale(1,-1);
BitmapreflectionImage=Bitmap.createBitmap(bitmap,
0,height/2,width,height/2,matrix,false);
BitmapbitmapWithReflection=Bitmap.createBitmap(width,(height+height/2),Config.ARGB_8888);
Canvascanvas=newCanvas(bitmapWithReflection);
canvas.drawBitmap(bitmap,0,0,null);
PaintdeafalutPaint=newPaint();
canvas.drawRect(0,height,width,height+reflectionGap,
deafalutPaint);
canvas.drawBitmap(reflectionImage,0,height+reflectionGap,null);
Paintpaint=newPaint();
LinearGradientshader=newLinearGradient(0,
bitmap.getHeight(),0,bitmapWithReflection.getHeight()
+reflectionGap,0x70ffffff,0x00ffffff,TileMode.CLAMP);
paint.setShader(shader);
//SettheTransfermodetobeporterduffanddestinationin
paint.setXfermode(newPorterDuffXfermode(Mode.DST_IN));
//Drawarectangleusingthepaintwithourlineargradient
canvas.drawRect(0,height,width,bitmapWithReflection.getHeight()
+reflectionGap,paint);
returnbitmapWithReflection;
}
}
packagecom.android.tutor;
importandroid.graphics.Bitmap;
importandroid.graphics.Canvas;
importandroid.graphics.LinearGradient;
importandroid.graphics.Matrix;
importandroid.graphics.Paint;
importandroid.graphics.PixelFormat;
importandroid.graphics.PorterDuffXfermode;
importandroid.graphics.Rect;
importandroid.graphics.RectF;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.PorterDuff.Mode;
importandroid.graphics.Shader.TileMode;
importandroid.graphics.drawable.Drawable;
publicclassImageUtil{
//放大缩小图片
publicstaticBitmapzoomBitmap(Bitmapbitmap,intw,inth){
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix=newMatrix();
floatscaleWidht=((float)w/width);
floatscaleHeight=((float)h/height);
matrix.postScale(scaleWidht,scaleHeight);
Bitmapnewbmp=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);
returnnewbmp;
}
//将Drawable转化为Bitmap
publicstaticBitmapdrawableToBitmap(Drawabledrawable){
intwidth=drawable.getIntrinsicWidth();
intheight=drawable.getIntrinsicHeight();
Bitmapbitmap=Bitmap.createBitmap(width,height,
drawable.getOpacity()!
=PixelFormat.OPAQUE?
Bitmap.Config.ARGB_8888
:
Bitmap.Config.RGB_565);
Canvascanvas=newCanvas(bi