Android的自定义控件可以实现多样化。在Android中如何实现圆形图片呢?
几个个事实:
·1.我们加载图片的是ImageView;
2.这个世界上没有圆形的图片,图片都是方形。
3.我们的画布可以绘制图片;
……
我们要实现的效果:(网上找到的一个图片)
由几个实现我们想到继承ImageView来写这个效果。如果加载的的方形的图片在ImageView上,我们有没有什么方法实现遮罩成圆形呢?
这个事可以实现的,下面提供一个方法:在onDraw函数上:
Paint paint = new Paint();
paint.setFilterBitmap(false);
paint.setStyle(Paint.Style.FILL);
Bitmap bm=makeSrc(getWidth(), getHeight());
int sc = canvas.saveLayer(0,0, bm.getWidth(), bm.getHeight(), paint,
Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG
| Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
| Canvas.FULL_COLOR_LAYER_SAVE_FLAG
| Canvas.CLIP_TO_LAYER_SAVE_FLAG);
//底层图片的绘制
super.onDraw(canvas);
//第二个图片
//画一个圆形截取底层的图片,而这个截取区域为圆形
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); // !!!
Bitmap mSrcB =makeDst(getWidth(),getHeight());
canvas.drawBitmap(mSrcB, 0, 0, paint);
paint.setXfermode(null);
canvas.restoreToCount(sc);
是这样实现的因为。在我们的API中有图片的运算:就是两个图片相交取交的部分。就是代码中的!!!!哪个。