本篇文章主要介绍了"android-自定义ImageView-圆形图片绘制代码详解",主要涉及到gravity,博客,Canvas,Activity方面的内容,对于Android开发感兴趣的同学可以参考一下:
andorid中圆形图片很早就有啦,今天算是搞了一把,自己写了出来,并且可以实际使用的代码。
先看效果图: 图片的原图是: 先看看xml的布局文件是怎么样的:...
第二种方式,PorterDuff.Mode.DST_IN
代码如下:
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.graphics.Xfermode;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageView;
/**
* Created by husy on 2015/10/18.
* @link http://blog.csdn.net/u010156024
* @description:
*/publicclassPorterDuffViewImageextendsImageView {private Paint mpaint;
privatestatic Xfermode xfermode;
privatestatic Bitmap bitmap;
private RectF rect;
publicPorterDuffViewImage(Context context) {
super(context);
init();
}
publicPorterDuffViewImage(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
publicPorterDuffViewImage(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
privatevoidinit(){
setLayerType(LAYER_TYPE_SOFTWARE, null);
xfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
mpaint = new Paint(Paint.ANTI_ALIAS_FLAG);
}
@OverrideprotectedvoidonDraw(Canvas Canvas) {
super.onDraw(Canvas);
int width = getWidth();
int height = getHeight();
Bitmap.Config config = Bitmap.Config.ARGB_8888;
Canvas Canvas1=null;
BitmapDrawable drawable = (BitmapDrawable)getDrawable();
drawable.setBounds(0, 0, width, height);
drawable.draw(Canvas);
if (bitmap == null){
Log.i("porterduffviewimage","bitmap==null");
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
rect = new RectF(0,0,width,height);
bitmap = Bitmap.createBitmap(width, height, config);
Canvas1 = new Canvas(bitmap);
Canvas1.drawOval(rect, paint);
}
mpaint.setXfermode(xfermode);
Canvas.drawBitmap(bitmap,0,0,mpaint);
}
}
布局文件: