我有一个应用程序,允许用户从一组预定义的控件构建复杂的屏幕布局。然后这些控件相互对话以生成最终功能。我看到的问题是,无论我做什么,似乎由一个控件的更改引起的任何重绘都会迫使整个屏幕重绘(如启用“显示屏幕更改”所示)。因为我有很多自定义控件,它们背后没有太多 XML,所以重绘可能会非常慢。
例如,一个控件可能是一个由几个线性布局构建的计算器。另一个可能是从线性布局动态生成的命令网格构建。然后在加载屏幕时将其中的每一个添加到父相对布局。在计算器上按下一个键会强制命令网格重新绘制,即使它的任何 View 都没有改变。
我试过打开硬件加速并将所有 View 的图层类型更改为 LAYER_TYPE_HARDWARE,但没有成功。
如何确保只重绘屏幕的特定部分?在这一点上,我没有做任何使自己无效的调用,但我有自己的按钮、布局和其他 UI 组件的主题化版本,所以如果我需要下降到那个控制级别,至少已经有一个框架就位。
最佳答案
这看起来很像这个.. Moving Android View and preventing onDraw to be called over and over again
但是,如果您只想绘制一个部分,请尝试调用 invalidate(rect)
,其中 rect 是一个 Rect
,您定义的区域将被“重绘”,除此之外afaik 你不能。
关于android - 每当发生变化时如何阻止android重新绘制整个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10641655/