我有一个包含自定义视图的滚动视图。自定义视图比屏幕区域大并且正确绘制。滚动查看优化
然而,scrollview往往会在滚动时不停地调用onDraw(),我似乎无法使其平滑。我使用ScrollView.getDrawingRect()来计算屏幕的可见部分,只绘制到那个,但它仍然返回整个视口(所以它被优化,不绘制屏幕外区域),而不是最后一个之间的增量位置和当前位置。理想情况下,我只想绘制三角洲,而不是整个可见窗口。
如果任何人都可以向我提供有关如何使用绘图缓存的更多信息,并且如果这将有助于优化滚动,我很乐意实施它,或者任何其他可能的解决方案,我们将不胜感激。
有更好的解决方案,我可以实现自己的缓存通过绘制我的视图到位图,然后绘制该位图onDraw而不是重新计算我的视图。 android视图缓存应该能够做类似的事情,并且文档提示它,但是我从来没有看过清楚解释视图缓存的东西。 – HaMMeReD 2011-04-06 21:40:29
你看过http://groups.google.com/group/android-developers/browse_thread/thread/224457b8cb4e039c?pli=1。但我同意,绘图缓存主题并没有很好的讨论。 – 2011-04-06 21:53:04
现在我刚刚实现了位图路由。在我的onDraw中,我看看是否有缓存位图,如果它存在,则将其创建为与视图相同的尺寸,然后使用指向位图的画布调用旧的onDraw。比在常规的onDraw中,它只是绘制位图。 这是一次记忆/性能折衷,但我在这里可以,因为这些观点不应该太大。如果它不能分配缓存,我可以直接回到视图。 – HaMMeReD 2011-04-06 22:06:18