Android自定義控件(三)繼承控件

繼承控件是我們Android開發中最重要也是最常使用的控件,它不同於自繪控件和組合控件,它不需要我們自己去重新去實現一個控件。面向對象的一個重要特性就是繼承,相信各位同學對繼承的瞭解都已經非常深入了,繼承控件理所當然會擁有父類的所有特性。我們去實現一個繼承控件的原因,往往是原生控件已經滿足不了我們的業務需求,需要我們自己去對原生控件進行定製化的功能擴展。


當然,繼承控件的實現目的多種多樣,下面舉幾個常見的例子。比如實現仿IOS平臺的具有回彈特性的ScrollView,比如實現嵌套在ScrollView中的ListView,再比如有這麼一個需求,顯示用戶的圓形頭像等等。考慮到今天這一講的內容的複雜性,同時爲了能更詳盡的理解繼承控件的思想,我已經提前寫了一個比較通用的網絡加載圖片的類庫來幫助大家理解。大家可以在文章的最後看到Github的代碼鏈接,歡迎fork。下面先簡單介紹下這個控件。


SmartImageView是ImageView的直接子類,擁有ImageView的所有特性,同時擴展了加載網絡圖片的方法。通過SmartImageView可以實現以下的功能。自定義屬性方便的設置加載中、加載失敗的圖片;加載圖片成功後,可以把圖片緩存到內存和本地,避免下次再次訪問網絡,加快了速度;啓用線程池去加載網絡圖片,避免開啓過多的線程;使用SoftReference去緩存圖片,防止內存溢出;最後就是具體的加載實現都是基於接口的,方便使用者的擴展。好了,老王賣瓜也賣完了,言歸正傳。簡單介紹下實現的思路和用法。


一、SmartImage以及實現類WebImage,貼出關鍵代碼


二、設置自定義屬性

三、聲明SmartImageView的成員變量

四、初始化自定義屬性

五、定義並實現網絡加載功能,貼出關鍵代碼

六、佈局使用

七、代碼使用

寫在最後,代碼精簡了再精簡,但還是蠻多的,只能貼出關鍵代碼,但是大體的實現思路已經體現出來了。所有的代碼我都放在了Github上了,歡迎Pull Request。

地址:https://github.com/JackCho/SmartImageView

如果覺得對你有所幫助,歡迎大家訂閱我的微信公衆賬號——Android乾貨分享。下面是微信的二維碼,爲你提供及時高質的Android乾貨。技術交流QQ羣:318588906,歡迎大家加羣,共同探討下Android和Java技術,一起壯大我們的微信乾貨分享社區。



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