本文將研究如何制作一個更復雜的定制組件:日期和天氣組件。
渲染:
上一篇文章中的電池組件是通過重寫視圖的onDraw來實現的,這對于更簡單的組件來說是實用的。但是對于日期和天氣成分,就沒有必要了。
它可以通過從自定義視圖中繼承一個容器組件(比如RelativeLayout)并添加預先布局好的xml文件來實現。這會容易得多。
當然,這種視圖組件不需要定制組件就可以實現,只需要通過組件封裝就可以更方便地調用,減少代碼重復。
具體實現很簡單,就不贅述了。如果需要,可以直接在github中閱讀源代碼
實現很簡單,但要優化到好用,還是要仔細考慮。以下是一些需要分享的小細節:
仔細看這個組件,它由幾個部分組成:1。日期和時間(陽歷和陰歷、時間,需要實時刷新);2.城市的全球定位系統定位;3.當前城市天氣。
在實際使用中,天氣信息的獲取依賴于城市位置,即在獲取當前城市的天氣之前,需要對城市進行定位。如果不緩存,會很慢,體驗會很差,所以需要緩存城市和天氣數據,所以為數不多次只會慢一點。后面沒什么變化。
只有細節處理得當,產品才能變得有用。
話雖如此,在常見的應用APP組件中還有一個細節需要注意(順便說一下)。
常見應用程序組件的屏幕截圖:
組件是一個回收視圖,應用程序圖標是從系統安裝的應用程序列表中讀取的。持久保存配置信息時,僅保存名稱而不是圖標,這將導致應用程序圖標在顯示過程中被臨時讀取。如果是在Adapter中直接讀取,UI顯示會被屏蔽,會被卡住,因為可能會有上百個系統應用,很費時間。這里有兩種治療方法:
為數不多個是線程讀取圖標;
二是緩存系統應用列表,避免重復檢索;