我想做个显示效果是圆形的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();
        }
    }