我有一个应用程序,它允许用户从一组预定义的控件构建复杂的屏幕布局。然后这些控件相互通信以生成最终功能。我看到的问题是,无论我做什么,似乎由一个控件的更改引起的任何重绘都会强制整个屏幕重绘(如启用“显示屏幕更改”所示)。因为我有很多自定义控件,它们背后没有太多的 XML,所以这种重绘可能会很慢。
例如,一个控件可能是由几个线性布局构建的计算器。另一个可能是从线性布局动态生成的命令网格构建。然后在加载屏幕时将这些中的每一个添加到父相对布局中。按下计算器上的一个键会强制命令网格重绘,即使它的任何视图都没有改变。
我尝试打开硬件加速并将所有视图的图层类型更改为 LAYER_TYPE_HARDWARE,但没有成功。
如何确保仅重绘屏幕的特定子部分?在这一点上,我没有做任何使自己无效的调用,但我有自己的按钮、布局和其他 UI 组件的主题版本,所以如果我需要降低到那个级别的控制,至少已经有一个框架到位。