【自定义View系列】android自定义View概述

来源:互联网 发布:mesos 大数据 编辑:程序博客网 时间:2024/06/10 01:28

  自定义view是一个综合的技术体系,本说明文档不去分析一个个具体的自定义view的实现,因为自定义view五花八门,是不可能全部分析一遍的。虽然我们不能把自定义view都分析一遍,但是我们能够提取出一种思想,而面对陌生的自定义view时,运用这个思想去快速解决问题。这种思想的描述如下:首先要掌握基本功,比如view的弹性滑动、滑动冲突、绘制原理等等,这些东西都是自定义view所必须的,尤其是那些看起来很炫的自定义view,他们往往对这些技术点的要求更高;熟练掌握基本功后,在面对新的自定义view时,要能够对其分类并选择合适的思路。另外平时还需要多积累一些自定义view相关的经验,并逐渐做到融会贯通,通过这种思想慢慢的就可以提高自定义view的水平了。

自定义View相关类的体系

这里写图片描述

  这个体系充分的运用了面对对象封装、继承、多态的思想,主要采用模板方法模式。我们自己自定义View逃不出对以上几个方法的运用。

为何要进行自定义控件的学习

  实现Android现有控件不能够实现的功能,就需要采⽤⾃定义控件的⽅式;

自定义View的步骤

这里写图片描述

自定义属性

1.在res/values创建attrs.xml
2.attrs.xml定义自定义属性
3.布局中给特定控件制定自定义属性
4.在控件内部获取自定义属性

AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto

http://blog.csdn.net/nwsuafer/article/details/42121521

注意:
必须重载两个构造方法,其中一个是代码创建使用的,一个是布局中引入使用的

自定义View类型1:对现有控件进行拓展

继承view,重写onDraw方法
可以利用已有控件的功能实现通用的功能,自己实现特有的部分就可以了。
可以调用控件已经存在的方法,实现功能;
利用onDraw可以实现控件显示的样子;
控件可以进行自定义属性的设置

步骤
1. 继承view或者view的子类
2. 声明构造方法!!!
一个参数的构造方法:在代码中使用会被调用
两个或者三个参数的构造方法,通过layout xl文件包含控件的时候,会自定调用
如果控件希望在layout使用,控件中必须包含两个或者3个参数的构造方法,通常两个参数的构造方法就行了,没有强制要求三个构造方法都写出来。
3. 当构造完成,就可以直接在布局xml中,引用控件
4. 自定义view的引用,采用<类全路径>去引用

自定义View类型2:通过组合来实现新的控件(继承viewgroup派生特殊的layout)

方式:将android中已有的控件,通过代码的方式,将这些控件组合在一起,实现更复杂的功能;
常见的案例:autocompletetextview、spinner
常见的第三方控件:瀑布流、拨号盘、侧滑菜单、水纹进度等等

步骤:
1. 集成viewgroup以及viewgroup的子类
2. 构造方法的声明
3. 初始化,其实各种效果都在初始化中实现

自定义View类型3:重写view来实现全新的控件

自己来实现外观,自己来写事件
步骤:
1. 继承view
2. 声明构造方法:现阶段 有三种构造方法
3. 绘制onDraw实现自己的外观
4. 尺寸的测量:告诉父容器,自身的尺寸
5. 可选:实现点击、手势
6. 可选:内容的刷新、线程的支持

自定义View的事件处理

包括:
View自身事件处理
Touch事件监听器事件处理
事件分发处理
常用接口回调来增加自定义View的扩展性

自定义View更新数据和刷新操作

1.invalidate强制View刷新,调用onDraw方法,invalidate必须在主线程中执行
2.postInvalidate强制View刷新,调用onDraw方法,postInvalidate可以在子线程执行,也可以在主线程执行

0 0
原创粉丝点击