7

我有一个应用程序,它允许用户从一组预定义的控件构建复杂的屏幕布局。然后这些控件相互通信以生成最终功能。我看到的问题是,无论我做什么,似乎由一个控件的更改引起的任何重绘都会强制整个屏幕重绘(如启用“显示屏幕更改”所示)。因为我有很多自定义控件,它们背后没有太多的 XML,所以这种重绘可能会很慢。

例如,一个控件可能是由几个线性布局构建的计算器。另一个可能是从线性布局动态生成的命令网格构建。然后在加载屏幕时将这些中的每一个添加到父相对布局中。按下计算器上的一个键会强制命令网格重绘,即使它的任何视图都没有改变。

我尝试打开硬件加速并将所有视图的图层类型更改为 LAYER_TYPE_HARDWARE,但没有成功。

如何确保仅重绘屏幕的特定子部分?在这一点上,我没有做任何使自己无效的调用,但我有自己的按钮、布局和其他 UI 组件的主题版本,所以如果我需要降低到那个级别的控制,至少已经有一个框架到位。

4

1 回答 1

0

this looks pretty much like this one.. Moving Android View and preventing onDraw to be called over and over again however if you just want to draw a section, try calling invalidate(rect) where rect is a Rect that you define an area that will be "redrawn", other than that afaik you can't.

于 2012-05-17T18:54:32.187 回答