我有一个应用程序,允许用户从一组预定义控件构建复杂的屏幕布局。然后这些控件相互交谈以生成最终功能。我看到的问题是,不管我做什么,似乎任何由于一个控件更改而导致的重绘都会强制整个屏幕重新绘制(如启用“显示屏幕更改”所示)。因为我有很多自定义控件没有太多的XML,这个重画可能会很慢。如何阻止android在重新绘制整个屏幕时发生改变?
例如,一个控件可能是一个计算器,它是从几个线性布局构建而成的。另一个可能是从线性布局动态生成的命令网格构建。当屏幕加载时,每一个都会被添加到父亲的相对布局中。按下计算器上的按键可以强制命令网格重绘,即使任何视图中没有任何改变。
我试着打开硬件加速并将所有视图的图层类型更改为LAYER_TYPE_HARDWARE,但都没有运气。
我该如何确保屏幕上只有一个特定的分区被重新绘制?在这一点上,我没有做任何调用来使自己失效,但我有我自己的可编辑版本的按钮,布局和其他UI组件,所以如果我需要去控制这个级别,至少已经有一个框架为它的地方。
不完全,也许我没有解释得很好。我在屏幕上有一个按钮。当我按下该按钮时,它将变为按下状态。当然,这需要重新绘制按钮。但我所看到的是整个屏幕都被重新绘制,而不仅仅是按钮。我并不是在自称无效,而是让底层的Android小部件完成它的功能。 它必须是可能的。我已经使用Show Screen Changes启用了设备上的其他应用程序,并可以看到其中一些只重绘了部分屏幕,其他人则重新绘制了一切。即使我使用对话框或吐司时,我的应用程序也会自行限制。 –
我有一些自定义版本的按钮,布局等,但它们非常简单,我不会覆盖处理绘制循环的任何函数。 –