自定义圆形ImageView出现问题,四个边角不是透明
我想做个显示效果是圆形的ImageView,实现思路就是override onDraw()方法,在里面先后画两幅图,一个圆形,一个原图像,然后叠加取交集,预期效果是原图像只显示出圆形的大小,达到蒙板效果。但是我发现实际效果是四个边角不是透明,也就是不是真正显示为圆形ImageView的效果。
我发现如果画之前设置canvas.saveLayer(),就能实现四个边角透明,但是不设置的话,就不行,请问为什么会这样?
代码如下:
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if (drawable == null) {
Log.i("mask", "drawable == null");
return;
}
try {
if (mPaint == null) {
mPaint = new Paint();
mPaint.setXfermode(MASK_XFERMODE);
mPaint.setFilterBitmap(false);
mPaint.setAntiAlias(true);
}
/* 如果加上这句话,就能实现四个角透明 */
// int count = canvas.saveLayer(0.0F, 0.0F, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);
drawable.setBounds(0, 0, getWidth(), getHeight());
drawable.draw(canvas);
Bitmap localBitmap = createMask();
canvas.drawBitmap(localBitmap, 0.0F, 0.0F, mPaint);
/* 如果加上这句话,就能实现四个角透明 */
//if (!isInEditMode())
// canvas.restoreToCount(count);
} catch (Exception ex) {
ex.printStackTrace();
}
} --------------------编程问答-------------------- 可以用路径 path 实现绘制哦
Android博文收集网 http://www.iflya.com --------------------编程问答-------------------- 我也这样搞过一个多边形的图片控件,只学会了怎么用,具体为什么没仔细研究。嘿嘿 --------------------编程问答-------------------- 请问有谁知道原因么
补充:移动开发 , Android