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