【Android】【控件繪製】監聽控件繪製變化

需求

在開發中,我們可能時常會碰到這樣的需求,諸如:

  • 監聽地圖縮放等級變化
  • 監聽控件中的畫面變化
  • 監聽ViewGroup中的節點變化

一般方法

很多時候,控件和類庫並沒有爲我們提供統一的回調方法來監聽這些事件
一般我們解決的方法就是,開一個線程,每隔1秒或100毫秒就去重新查詢下界面內容
然後通過代碼手動去判斷界面是否變化,再根據判斷結果處理相關業務

這樣做雖然可以實現功能,但是有兩個明顯的缺點

  • 代碼顯得很不正規,給人一種投機取巧的感覺
  • 即使界面一個小時不更新,我們仍然需要不斷的查詢界面變化,很浪費性能

更好的方案

控件每次執行完onDraw繪製方法,都會觸發onDrawListener
我們通過getViewTreeObserver().addOnDrawListener(listener)就可以監聽控件是否發生了新的繪製
然後在listener中處理界面變化時的業務邏輯即可

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