android - 每当发生变化时如何阻止android重新绘制整个屏幕?

标签 android

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

相关文章:

Android Spannable 无法在回收器 View 适配器中工作

java - 如何向Volley的JsonArrayRequest传递参数

android - 为 Eclipse 安装 ADT 插件

android - 我如何发布具有相同包名但版本代码和版本名称不同的apk

android - Android网络库: OkHTTP, Retrofit和Volley对比

android - 进度条动画不适用于所有 Android 设备

Android MediaSessionCompat.setPlaybackState 不通知位置变化

Android Studio 3.0 Canary 9 - 无法解析包

android - Volley 图像缓存

android - 在android中添加放大和缩小限制