文档章节

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

Jack_1900
 Jack_1900
发布于 2014/07/13 22:45
字数 746
阅读 890
收藏 62

继承控件是我们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干货。

© 著作权归作者所有

Jack_1900
粉丝 225
博文 35
码字总数 34078
作品 1
普陀
程序员
私信 提问
加载中

评论(3)

Mcdull1992
Mcdull1992
网络权限忘记加了
Jack_1900
Jack_1900 博主

引用来自“coldfire519”的评论

50
怎么。写的不好?
coldfire519
coldfire519
50
Android自定义View的实现(四)

如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种,自绘控件、组合控件、以及继承控件。那么下面我们就来依次学习一下,每种方式分别是如何自定义View的。 一、自绘控件 自绘...

JayPark不作死
2014/07/02
4.7K
0
Android自定义控件实现及其布局

Android自定义控件实现及其布局 Android自定义控件一般要继承View类,因此控件的实现及其相应的布局需要完成: 1. 继承View类,并实现参数为(Context context,AttributeSet attrs)的构造函数...

长平狐
2012/10/08
6.1K
0
Android 滑动效果高级篇(八)—— 自定义控件

自定义控件,较常用View、ViewGroup、Scroller三个类,其继承关系如下: 本示例自定义控件,实现一个Gallery效果,并添加了一个显示View个数和位置的bar条,效果图: 自定义控件,包含通过继...

长平狐
2013/01/06
2K
0
Android 入门

参考资料: Android sdk 的doc文档写得很详细了: android-sdk-windows-1.5_r2/docs/guide/tutorials/hello-world.html 读完这些, 基本可以搞定基础应用了, 所以没什么好讲的, 总结一下: 架构管...

晨曦之光
2012/03/09
276
0
android--------自定义控件 之 基本流程篇

在我们平常的Android开发中经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件 自定义控件可以设计出很多你想要的功能和模块,在开发中是...

切切歆语
2018/04/30
19
0

没有更多内容

加载失败,请刷新页面

加载更多

Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次...

数澜科技
今天
4
0
Xss过滤器(Java)

问题 最近旧的系统,遇到Xss安全问题。这个系统采用用的是spring mvc的maven工程。 解决 maven依赖配置 <properties><easapi.version>2.2.0.0</easapi.version></properties><dependenci......

亚林瓜子
今天
10
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
10
0
Set 和 Map

Set 1:基本概念 类数组对象, 内部元素唯一 let set = new Set([1, 2, 3, 2, 1]); console.log(set); // Set(3){ 1, 2, 3 } [...set]; // [1, 2, 3] 接收数组或迭代器对象 ...

凌兮洛
今天
4
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部