当前位置:编程学习 > wap >>

自定义圆形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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,