packagecom.img.util;
importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.Canvas;
importandroid.graphics.LinearGradient;
importandroid.graphics.Matrix;
importandroid.graphics.Paint;
importandroid.graphics.PixelFormat;
importandroid.graphics.PorterDuff.Mode;
importandroid.graphics.PorterDuffXfermode;
importandroid.graphics.Rect;
importandroid.graphics.RectF;
importandroid.graphics.Shader.TileMode;
importandroid.graphics.drawable.Drawable;
publicclassImgUtil{
//放大缩小图片
publicstaticBitmapzoomBitmap(Bitmapbitmap,intw,inth){
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix=newMatrix();
floatscaleWidth=((float)w/width);
floatscaleHeight=((float)h/height);
matrix.postScale(scaleWidth,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;
}
}
importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.Canvas;
importandroid.graphics.LinearGradient;
importandroid.graphics.Matrix;
importandroid.graphics.Paint;
importandroid.graphics.PixelFormat;
importandroid.graphics.PorterDuff.Mode;
importandroid.graphics.PorterDuffXfermode;
importandroid.graphics.Rect;
importandroid.graphics.RectF;
importandroid.graphics.Shader.TileMode;
importandroid.graphics.drawable.Drawable;
publicclassImgUtil{
//放大缩小图片
publicstaticBitmapzoomBitmap(Bitmapbitmap,intw,inth){
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix=newMatrix();
floatscaleWidth=((float)w/width);
floatscaleHeight=((float)h/height);
matrix.postScale(scaleWidth,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.img.util;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.drawable.Drawable;
importandroid.os.Bundle;
importandroid.widget.ImageView;
publicclassMainActivityextendsActivity{
privateImageViewmImageView01,mImageView02;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
privatevoidsetupViews(){
mImageView01=(ImageView)findViewById(R.id.image01);
mImageView02=(ImageView)findViewById(R.id.image02);
//获取壁纸返回值是Drawable
Drawabledrawable=getWallpaper();
//将Drawable转化为Bitmap
Bitmapbitmap=ImgUtil.drawableToBitmap(drawable);
//缩放图片
BitmapzoomBitmap=ImgUtil.zoomBitmap(bitmap,100,100);
//获取圆角图片
BitmaproundBitmap=ImgUtil
.getRoundedCornerBitmap(zoomBitmap,10.0f);
//获取倒影图片
BitmapreflectBitmap=ImgUtil
.createReflectionImageWithOrigin(zoomBitmap);
//这里可以让Bitmap再转化为Drawable
//DrawableroundDrawable=newBitmapDrawable(roundBitmap);
//DrawablereflectDrawable=newBitmapDrawable(reflectBitmap);
//mImageView01.setBackgroundDrawable(roundDrawable);
//mImageView02.setBackgroundDrawable(reflectDrawable);
mImageView01.setImageBitmap(roundBitmap);
mImageView02.setImageBitmap(reflectBitmap);
}
}
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.drawable.Drawable;
importandroid.os.Bundle;
importandroid.widget.ImageView;
publicclassMainActivityextendsActivity{
privateImageViewmImageView01,mImageView02;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
privatevoidsetupViews(){
mImageView01=(ImageView)findViewById(R.id.image01);
mImageView02=(ImageView)findViewById(R.id.image02);
//获取壁纸返回值是Drawable
Drawabledrawable=getWallpaper();
//将Drawable转化为Bitmap
Bitmapbitmap=ImgUtil.drawableToBitmap(drawable);
//缩放图片
BitmapzoomBitmap=ImgUtil.zoomBitmap(bitmap,100,100);
//获取圆角图片
BitmaproundBitmap=ImgUtil
.getRoundedCornerBitmap(zoomBitmap,10.0f);
//获取倒影图片
BitmapreflectBitmap=ImgUtil
.createReflectionImageWithOrigin(zoomBitmap);
//这里可以让Bitmap再转化为Drawable
//DrawableroundDrawable=newBitmapDrawable(roundBitmap);
//DrawablereflectDrawable=newBitmapDrawable(reflectBitmap);
//mImageView01.setBackgroundDrawable(roundDrawable);
//mImageView02.setBackgroundDrawable(reflectDrawable);
mImageView01.setImageBitmap(roundBitmap);
mImageView02.setImageBitmap(reflectBitmap);
}
}