为什么画布没有在onDraw中剪辑?

时间:2014-04-13 11:17:57

标签: android

在此示例中,我尝试仅使我的自定义视图的矩形无效,但传递给onDraw的画布不会被剪裁。输出始终显示剪辑边界包含整个画布。这是什么原因?

public class ClippingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new ClippingView(this));
    }
}

class ClippingView extends View {

    Rect r = new Rect();

    public ClippingView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.getClipBounds(r);
        Log.d("ClippingView","onDraw: " + r);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        invalidate(0,0,400,400);
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

我刚刚发现了一个密切相关的问题:Partial invalidation in custom Android view with hardware acceleration

Romain Guy回答:

  

部分重绘工作正常,只有屏幕的指定区域才会被重绘。然而,它不会改变画布上的剪辑边界。将记录所有绘图操作,但实际上只会执行与脏区域相交的那些操作。