android - 自定义 View - 避免在非交互时重绘

标签 android optimization rendering

我有一个复杂的自定义 View - 照片拼贴。

观察到的是,每当发生任何 UI 交互时,都会重绘 View 。

当我单击“后退”按钮返回上一个 Activity 时,我如何才能避免完全重绘(例如,使用缓存的 UI) View ,因为这也会导致重绘 View 。

在探索 API 和网络时,我找到了一个方法 - getDrawingCache() - 但不知道如何有效地使用它。

如何有效地使用它?

我概述了自定义 View 的其他问题 here .

最佳答案

我找到了比使用 getDrawingCache 更好的方法。

在onDraw方法中,除了在自然 Canvas 上绘制外,我还在内存 Canvas 上绘制。

Bitmap cacheBmp = Bitmap.Create(....);
Canvas cacheCanvas = new Canvas(cacheBmp);


void onDraw(Canvas c)
{
   if(updateDueToInteraction)
   {
     c.drawXXX(...);
     cacheCanvas.drawXXX(...);
   } else
   {
     c.drawBitmap(cacheBmp, 0, 0);
   }
}

关于android - 自定义 View - 避免在非交互时重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764476/

相关文章:

java - 解析 JSON,不确定如何以及何时使用迭代器(Android 平台)

java - 显示对话框的软键盘

Java JIT 循环展开策略?

C# 依赖属性 - 是否检查 CLR Wrapper 中的值

python - 像我一样向我解释 5 : OpenGL 4. x 渲染管道

android - 查看菜单文件的绑定(bind)?

java - 通过 Jsoup Java Android 登录 Twitter

algorithm - 算法问题:翻转列

java - JTree 节点的渲染和字体变化

css - 在渲染插件中,由 css 导入的外部字体在下载 pdf 时不起作用