Android控件---Android群英传记录
来源:互联网 发布:士兵伙食知乎 编辑:程序博客网 时间:2024/06/04 17:53
主要有ViewGroup控件和View控件
View的测量,提供 MeasureSpec类,在onMeasure()方法中进行, MeasureSpec是一个32位的int值,高2位为测量模式,低30位为测量大小。
测量模式3种
EXACILY 精确模式 指定值或match_parent 默认
AT_MOST 最大值模式 wrap_conent
UNSPECIFIED 不指定模式,通常在自定义View使用
View的绘制 重写onDraw()方法,Canvas对象上绘制所需要的图形 Canavas canvas = new Canvas(bitmap);bitmap是用来储存绘制在Canvas上的像素信息。
ViewGroup的测量 遍历所有子View来确定自己的大小,在自定义ViewGroup时,通常会重写onLayout()方法控制其子View显示位置的逻辑。
ViewGroup的绘制会使用dispatchDraw()方法绘制其子View
自定义View
比较重要的回掉方法:
onFinishInflate();从XML加载组件后回掉
onSizeChanged():组件大小改变时
onMeasure(): 进行测量
onLayout: 确定显示的位置
onTouchEvent():监听到触摸事件时
三种实现自定义控件的方法
对现有控件进行拓展
一般在onDraw()方法中,在super.onDraw(canvas)回掉方法前实现自己的逻辑,对原控件来说就是绘制前。
通过组合来实现新的控件 引入自定义属性,addView()方法将其他控件加到模板中。因为每个调用者需要的功能不一样,需通过接口回掉的思想将具体实现逻辑交给调用者。
重写View来实现全新的控件 难点在于绘制控件和实现交互。继承View类,并重写onDraw()、onMeasure()等方法实现绘制逻辑,重写onTouchEvent()等触控事件来实现交互逻辑。
(调用invalidate()通知View进行重绘,太快。调用postInvalidateDelayed(300)进行View的延迟重绘。)
自定义ViewGroup
需要重写onMeasure()方法来对子View进行测量,重写onLayout()方法确定子View的位置,重写onTouchEnvent()方法增加响应事件。
- Android控件---Android群英传记录
- Android控件架构(Android群英传)
- Android群英传学习记录-第一章
- android群英传___文章记录
- Android群英传读书笔记-----控件架构
- Android群英传读书笔记---自定义控件(-)
- Android群英传-自定义View、控件
- Android群英传学习记录-第二章
- 《Android群英传》学习记录(一)
- 《Android群英传》学习记录(三)
- 《Android群英传》学习记录(二)
- 《Android群英传》学习记录(四)
- Android群英传之Android控件架构与自定义控件
- 3.Android群英传读书笔记-控件架构与自定义控件
- Android群英传 第三章-控件架构与自定义控件
- Android群英传学习——控件架构与自定义控件
- 《Android群英传》读书笔记——Android控件架构
- Android群英传——第三章Android控件架构
- 解决genymotion-arm-translation.zip无法拖拽安装的问题
- ElasticsearchCRUD使用(三)【嵌套文档的MVC】
- VS注释与取消注释快捷键
- 结构体内存对齐
- 致一年后的自己
- Android控件---Android群英传记录
- 在二叉查找树中插入节点
- Mac_XCode编译ios静态库
- 图像分割与FCN
- 多线程与多进程
- TensorBoard如何调参
- Opencv 备忘录
- Mac下如何识别Android设备
- Android 开源日志库 Logger 使用教程