我有一個包含自定義視圖的滾動視圖。自定義視圖比屏幕區域大並且正確繪製。滾動查看優化
然而,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