1
在这个例子中,我尝试使我的自定义视图只有一个矩形失效,但传递给onDraw的画布不被剪裁。输出始终显示剪辑边界包含整个画布。这是什么原因?为什么画布不在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;
}
}
检查,如果画布硬件加速,如果是这样了解何时HWD ACC – pskink
@psking剪辑:但我可以重现我的Nexus 5,其中canvas.isHardwareAccelerated()返回true,并且在我的模拟器(API V19此行为)canvas.isHardwareAccelerated()返回false。 – moonring
尝试触摸视图并移动几次,您将看到正确的剪辑边界400x400 – pskink