Android自定义控件(三)继承控件

继承控件是我们Android开发中最重要也是最常使用的控件,它不同于自绘控件和组合控件,它不需要我们自己去重新去实现一个控件。面向对象的一个重要特性就是继承,相信各位同学对继承的了解都已经非常深入了,继承控件理所当然会拥有父类的所有特性。我们去实现一个继承控件的原因,往往是原生控件已经满足不了我们的业务需求,需要我们自己去对原生控件进行定制化的功能扩展。

当然,继承控件的实现目的多种多样,下面举几个常见的例子。比如实现仿IOS平台的具有回弹特性的ScrollView,比如实现嵌套在ScrollView中的ListView,再比如有这么一个需求,显示用户的圆形头像等等。考虑到今天这一讲的内容的复杂性,同时为了能更详尽的理解继承控件的思想,我已经提前写了一个比较通用的网络加载图片的类库来帮助大家理解。大家可以在文章的最后看到Github的代码链接,欢迎fork。下面先简单介绍下这个控件。

SmartImageView是ImageView的直接子类,拥有ImageView的所有特性,同时扩展了加载网络图片的方法。通过SmartImageView可以实现以下的功能。自定义属性方便的设置加载中、加载失败的图片;加载图片成功后,可以把图片缓存到内存和本地,避免下次再次访问网络,加快了速度;启用线程池去加载网络图片,避免开启过多的线程;使用SoftReference去缓存图片,防止内存溢出;最后就是具体的加载实现都是基于接口的,方便使用者的扩展。好了,老王卖瓜也卖完了,言归正传。简单介绍下实现的思路和用法。

一、SmartImage以及实现类WebImage,贴出关键代码

《Android自定义控件(三)继承控件》

二、设置自定义属性

《Android自定义控件(三)继承控件》

三、声明SmartImageView的成员变量

《Android自定义控件(三)继承控件》

四、初始化自定义属性

《Android自定义控件(三)继承控件》

五、定义并实现网络加载功能,贴出关键代码

《Android自定义控件(三)继承控件》

六、布局使用

《Android自定义控件(三)继承控件》

七、代码使用

《Android自定义控件(三)继承控件》

写在最后,代码精简了再精简,但还是蛮多的,只能贴出关键代码,但是大体的实现思路已经体现出来了。所有的代码我都放在了Github上了,欢迎Pull Request。

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

如果觉得对你有所帮助,欢迎大家订阅我的微信公众账号——Android干货分享。下面是微信的二维码,为你提供及时高质的Android干货。

《Android自定义控件(三)继承控件》

    原文作者:移动开发
    原文地址: https://my.oschina.net/jack1900/blog/290244
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞