我想做个显示效果是圆形的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();
}
}
但是我发现实际效果是四个边角不是透明,也就是不是真正显示为圆形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();
}
}
解决方案 »
- Java如何测试Int, char, boolean的字节数?
- android webview 进度条问题~~~
- android ActivityGoup加载WebView,WebView显示Flash显示一半
- 使用安卓开发javamail邮件问题
- 安卓开发需要多好的java基础
- android 电视 安装APK
- android中跳转界面延迟黑屏
- Thread对象错误提示:Thread already started.???明明停止了,为什么还在运行??
- 求高手现身,AsyncQueryHandler 4.0版 以上无法 分组 group by
- Android问题
- Android开发难题,求高手解决~~
- android listview数据刷新问题
Android博文收集网 http://www.iflya.com