問題記錄誤以爲自定義view調用invalidate()無效,onDraw()方法不重繪

問題描述:今天自定義了一個view,放在recyclerview中顯示,正常每個item顯示的不一樣纔對,因爲每個不同的item我都對自定義view樣式進行了修改,結果運行時,每個item顯示的樣式都是一樣的。而且是按最後一次設置view的樣式顯示的。經過排查發現我把繪製的參數如:圓半徑和位置,都設置成了靜態的。根據靜態的特性:類創建靜態變量則一起創建,而且生命週期跟類相同,統一在方法區中存在。這樣就導致了,我的所有自定義view用的都是共同的參數。所以就出現了所有自定義view都是一樣的,而且是按最後一次設置參數顯示。因爲最後一次參數設置 改變了所有自定義view的參數(他們共用了一個靜態變量)。至此 我以爲invalidate()無效是錯誤的。

解決辦法:解決辦法當然就是把靜態變量改爲普通變量即可。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章