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