【发布时间】:2023-03-19 05:10:01
【问题描述】:
我有一个填满整个屏幕的自定义视图。 (钢琴键盘)
当用户触摸按键时,会调用invalidate() 并重新绘制整个键盘以显示触摸按键的新状态。
目前视图非常简单,但我计划添加更多漂亮的图形。由于整个键盘是动态渲染的,因此重绘整个键盘的成本会更高。
所以我想,让我们看看部分重绘。现在我用正确的脏区调用invalidate(Rect dirty)。如果我确实想要部分重绘,我将我的onDraw(Canvas canvas) 方法设置为仅在脏区域中绘制键。这会导致这些键被绘制,但键盘的其余部分完全是黑色/根本没有绘制。
我期望调用invalidate(Rect dirty) 会“缓存”当前的canvas,并且只“允许”在脏区中绘图,这是否是错误的?
有什么方法可以实现我想要的吗? (一种“缓存”画布并只重绘脏区的方法?”
【问题讨论】:
标签: android drawing partial invalidation