点此进入:从零快速构建APP系列目录导图
点此进入:UI编程系列目录导图
点此进入:四大组件系列目录导图
点此进入:数据网络和线程系列目录导图
本节例程下载地址:
WillFLowCustomView
WillFlow_FollowBallView
首先看一下本篇实现的效果图:
圆形百分比例显示控件:
跟随手指移动小球控件
一、什么是自定义控件?
对于Android应用开发者而言,Android 中自带的控件并不陌生,常用的单独控件有TextView(文本框)、EditText(编辑框)、Button( 按钮)、ImageView(图片视图)等,组合控件(即用来摆放多个单独控件的容器)常见的有LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)等。那么什么是自定义控件呢?自定义控件是基于项目开发中定制化视图的需要,或为了提高复用性而基于既有控件扩展封装的控件。
二、为什么要自定义控件?
在大多数情况下,Android 为开发者提供的这些控件已经足够我们使用,并且对于没有怎么使用自定义控件的程序员来说,对自定义控件多少会有点抵触,因为他们会觉得Android系统已为程序员提供了大量控件足够开发使用,而且网上开源的控件也足够丰富,何需自己去自定义。但在某些情况下项目中需要定制化视图,这个时候就不得不使用到自定义控件方面的知识了。
所以了解自定义的相关知识,以及相关原理是非常必要的,这样我们就可以基于系统自带的控件扩展封装符合项目所需的控件。有人说网上开源的自定义控件不是可以拿过来直接用的吗?但有时候这些自定义控件是没法完全满足项目开发需要的,这个时候若是了解了自定义知识,就可以更加方便的修改这些开源自定义控件为己所用,这就是为什么我们需要自定义控件
三、自定义控件三大类型
- 组合已有的控件实现
- 完全自定义控件(继承View, ViewGroup)
- 继承已有的控件实现(扩展已有的功能)
四、自定义View的步骤
1、自定义View(ViewGroup)的属性
2、在 View(ViewGroup)的构造方法中获得我们自定义的属性
3、重写 onMeasure(简单的应用中有时不需要重写)
4、重写 onDraw(基于Android控制扩展的有时不需要重写)
五、自定义控件基本绘制原理
View的绘制基本上由measure()、layout()、draw()这个三个函数完成。