我們正在嘗試寫我們自己的MapView,我試圖找出如何將覆蓋到的MapView使他們得到在其他地圖API繪製Android設備上查看的ViewGroup無效的OnDraw並繪製
我已經得到了擴展ViewGroup的MapView。我想我已經知道調用MapView.invalidate()會導致調用mapview的dispatchDraw方法。這聽起來正確嗎?
如果是這樣,那麼mapview的onDraw和draw方法何時被調用?
更重要的是所有這些觀點以及哪些方法在什麼地方記錄得很好時調用?
謝謝!
EDIT This SO post解釋,該延伸的ViewGroup班,的onDraw方法並不自動調用。如果你需要它,你必須強制它。但隨着ebarrenchea指出,順序是畫,onDraw有,dispatchDraw如果所有的方法被稱爲
是啊,我見過那個頁面,但沒有在那裏說「調用invalidate導致......發生」。所以當我調用mapView.invalidate時,mapview的onDraw被執行,然後mapView的繪圖,然後mapView的dispatchDraw,是否正確? – Josh 2013-02-22 13:00:10
那裏的文檔聲明「如果視圖是可見的,onDraw(android.graphics.Canvas)將在未來某個時候被調用。」並查看視圖源代碼指出'onDraw'從'draw'被調用,緊接着'dispatchDraw'將被調用,你可以看到[here](http://grepcode.com/file/repository.grepcode.com /java/ext/com.google.android/android/2.0_r1/android/view/View.java#View.draw%28android.graphics.Canvas%29)。 – ebarrenechea 2013-02-22 15:25:20
嗯,我第一次錯過了源代碼鏈接。我讀過這個文檔,看了看文檔,它很有道理,但是我的onDraw方法並沒有被調用!我在那裏有一個日誌語句,所以我可以看到它什麼時候發生,但它從來沒有寫過..任何想法爲什麼ondraw不會被調用?視圖是可見的,它是屏幕上的東西! – Josh 2013-02-22 16:21:16