在Android上的onDraw之外更新视图的画布

时间:2014-08-11 19:19:12

标签: android view android-canvas

我需要更新自定义视图的一小部分才能显示小动画。视图的其余部分仅具有静态图像。最直接的方法是获取视图的画布并直接更新该特定部分。但是无论如何我都无法在view :: onDraw方法之外找到视图的canvas对象。

我知道的唯一选择是:使用指定的矩形调用view :: invalidate()以最小化绘图闪烁。我有代码来更新onDraw中的整个视图。因此,最好的办法是检测剪切矩形并仅运行代码来更新指定区域,以便最大限度地减少CPU使用量?

1 个答案:

答案 0 :(得分:0)

我想我会尽我所知来回答这个问题。

  1. 在onDraw方法之外没有直接访问画布。
  2. 虽然我们可以使用Canvas.getClipBounds()函数检测剪切矩形,但如果启用GPU,则getClipBounds函数始终返回整个视图区域。当不使用GPU时,getClipBounds()返回实际的脏区域。由于大多数手机都有GPU,因此功能getClipBounds几乎没用。