在此示例中,我尝试仅使我的自定义视图的矩形无效,但传递给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;
}
}
答案 0 :(得分:1)
我刚刚发现了一个密切相关的问题:Partial invalidation in custom Android view with hardware acceleration
Romain Guy回答:
部分重绘工作正常,只有屏幕的指定区域才会被重绘。然而,它不会改变画布上的剪辑边界。将记录所有绘图操作,但实际上只会执行与脏区域相交的那些操作。