2011-07-25 46 views
2

我已經制作了我自己的canvas類,它擴展了imageView。我的onDraw()方法繪製出用戶的GPS位置,每次用戶移動時我都會一直調用這個onDraw方法。我的問題是我也想繪製一個只需要繪製一次的gps軌跡(當用戶移動時不需要更新)。我想知道是否有可能有超過1個onDraw方法或有任何方法分離1)用戶位置和2)gps trail?android canvas - 我可以有多種繪製方法嗎?

我的理由是我不想通過每次用戶gps位置更改時重新繪製gps路線來浪費內存。這是一種浪費。

回答

1

你見過性能受打擊嗎?如果不是,不要擔心。如果有的話......我不認爲這會浪費CPU週期。所以,如果應用程序似乎已經足夠快,不用擔心優化它。

如果您的應用程序有點滯後,並且您已經發現該線索是瓶頸......我建議將其緩存到位圖中。這樣,您仍然必須繪製軌跡,但不必在每個框架上計算軌跡的座標。

0

嗯,不能超過1個onDraw方法,假設我正確理解你的問題。您需要考慮有關如何處理此問題的備用方法。

@DeeV建議,這可以爲你的解決方案。

1

最近我不得不解決了一個類似的問題,我會簡單地解釋一下我做了什麼以防萬一有什麼幫助。

您可以做的是使用多個重疊視圖,其中可能包含不經常重繪的背景圖形,以及包含經常更新的圖形的前景視圖。然後,爲了獲得性能,您可以設計背景視圖的onDraw(),使其由位圖支持,然後您將其保留爲類變量。在背景圖形的第一個onDraw()中,您對Canvas執行的繪圖速度相對較慢。在後續調用onDraw()時,只需將該位圖繪製到畫布。

我剛剛完成了這個工作。基本上我的應用程序所做的是顯示一些圖形儀表。這些測量儀具有許多僅繪製一次的圖形(測量儀表面,數字圖例)以及隨着模型數據變化需要一遍又一遍重繪的指針圖形。首先,我將背景圖形和前景圖形分割成單獨的重疊視圖。現在,無效和重繪前景指針圖形當然會導致它重疊的任何內容也會失效,所以每當指針View被重繪時,都會調用背景圖形View的onDraw()方法。背景視圖只需繪製背景圖形一次,但保留支持畫布的位圖,並在隨後的調用中將該位圖繪製回畫布(這比使用Path()對象最初創建圖形快很多) 。

​​3210
相關問題