【自定义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可以在子线程执行,也可以在主线程执行
- 【自定义View系列】android自定义View概述
- Android View---自定义View
- Android View---自定义View
- android 自定义view之概述(一)
- 自定义View系列目录索引
- 自定义view-日历系列
- Android自定义View系列(aige)
- android-----自定义View实现系列(一)
- 【自定义View系列】android的UI结构
- android-----自定义View实现系列(一)
- android自定义View基础系列一
- 【Android自定义view系列】圆形百分比进度条
- Android自定义View系列笔记收录
- android自定义view系列:认识activity结构
- Android 自定义View实战系列 :时间轴
- Android 自定义View实战系列 :时间轴
- Android 自定义View 之 自定义View属性
- Android自定义view自定义属性
- 【java并发】Callable与Future的应用
- 简单几步让你的公式逼格爆表!
- ImageLoader配置
- microzed qspi启动方式(1)
- iOS——封装网络请求
- 【自定义View系列】android自定义View概述
- Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql
- 【java并发】线程锁技术的使用
- Java多线程 之 Runnable Thread (一)
- ROS 教程
- springMVC工作原理
- golang: 官博译文:可测试的 Golang 代码示例
- root.sh Fails to Start HAIP as Default Gateway is Configured for Private Network VLAN (ID 1366211)
- JavaScript里的match和正则表达式