这是这种情况 - 我的根布局是滚动视图 - 具有多个绘图操作的自定义视图嵌入在布局中 我的问题是,如果布局被滚动,那么 customview.ondraw() 将被多次调用。由于 ondraw() 中有很多操作,我的性能受到了影响。
最好的策略是什么?
请参阅 View.setDrawingCacheEnabled() 上的文档。请注意,您必须在 onDraw 实现中调用 getDrawingCache(),如果 getDrawingCache() 返回非空值,则绘制返回的位图。我不确定 ScrollView 是否会自动调用 setDrawingCacheEnabled。你必须尝试一下并找出答案。我认为确实如此;但是您仍然需要在 onDraw 例程中调用 getDrawingCache() 。
这会处理非硬件加速的情况。
对于硬件加速视图,请参阅 setLayerType 的文档。缓存硬件加速视图实际上提供了性能改进,这远非既定事实,因此请谨慎行事。
忘记了 Android 中方法的名称,但是有一个带有拆分窗格的 Swing 演示。
如果将标志设置为 true(连续更新),则在您移动吐出组件时,拆分面板正在绘制。滚动也有同样的效果。只有在滚动完成时,您才能连续使用绘图和另一个绘图。iOS 也是如此。
您需要找到这些方法,并在需要时嵌入您的自定义视图绘图。