自定义视图 - 非交互时避免重绘
我有一个复杂的自定义视图 - 照片拼贴。
我们观察到,每当发生任何 UI 交互时,视图就会重新绘制。
如何避免视图的完全重绘(例如,使用缓存的 UI),特别是当我单击“后退”按钮返回到上一个活动时,因为这也会导致视图的重绘。
在探索 API 和 Web 时,我发现了一种方法 - getDrawingCache()
- 但不知道如何有效地使用它。
我该如何有效地使用它?
我在此处概述了自定义视图的其他问题。
I have a complex custom view - photo collage.
What is observed is whenever any UI interaction happens, the view is redrawn.
How can I avoid complete redrawing (for example, use a cached UI) of the view specially when I click the "back" button to go back to previous activity because that also causes redrawing of the view.
While exploring the API and web, I found a method - getDrawingCache()
- but don't know how to use it effectively.
How do I use it effectively?
I've had other issues with Custom Views that I outline here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我找到了比使用 getDrawingCache 更好的方法。
在onDraw方法中,除了在自然画布上绘图之外,我还在纯内存画布上绘图。
I found a better way than using getDrawingCache.
In the method onDraw, apart from drawing in the natural canvas, I also draw on an memory-only canvas.
首先,您必须使用
setDrawingCacheEnabled(true)
方法,以便您的 View 启用缓存。然后,您可以使用 getDrawingCache(boolean) 方法返回代表视图的 Bitmap 。然后,您可以手动绘制该位图。如果您没有通过调用
setDrawingCacheEnabled(true)
方法启用缓存,则必须在此之前调用buildDrawingCache()
(并调用destroyDrawingCache()
代码> 完成后)。再见!
First of all you will have to use the
setDrawingCacheEnabled(true)
method, so that you're View is cache-enabled. Then, you can use the getDrawingCache(boolean) method which returns a Bitmap representing the View. Then, you can draw that bitmap manually.If you don't enable caching by calling the
setDrawingCacheEnabled(true)
method, you will have to callbuildDrawingCache()
before (and calldestroyDrawingCache()
when you're done).Bye!