Android学习笔记之控件架构
2016-04-03 14:53
357 查看
Android中控件大概分为两类,ViewGroup和View。
ViewGroup父控件,管理包含多个View控件。通过ViewGroup形成控件树。
上层控件负责下层控件的测量和绘制,并统一调度交互事件。
View的测量,即告诉系统画一个多大的View,在onMeasure()中进行。
MeasureSpec类,帮助我们测量View,32位测量值,高2位为测量模式,底30位为测量大小。
用位运行模式为了提高效率。
测量模式分三种:
1,EXACTLY:精确模式,指定控件具体大小,系统默认也是这种模式。
2,AT_MOST:最大值模式,控件尺寸不超过某个值。
3,UNSPECIFIED:想多大就多大,通常情况下,绘制自定义View时用。
View的绘制:onDraw()方法,通过Canvas对象进行绘图。
ViewGroup的测量:当为wrap_content时,对子View进行历遍获取所以子View大小,决定自己大小。其他模式则通过具体值。
ViewGroup的绘制:通常不需要,但会调用dispatchDraw()方法来绘制子View。
自定义View:
1.对现有控件进行扩展
2.通过组合来实现新控件
3.重写View来实现全新控件
详细在下一篇文章。O(∩_∩)O哈哈~
ViewGroup父控件,管理包含多个View控件。通过ViewGroup形成控件树。
上层控件负责下层控件的测量和绘制,并统一调度交互事件。
View的测量,即告诉系统画一个多大的View,在onMeasure()中进行。
MeasureSpec类,帮助我们测量View,32位测量值,高2位为测量模式,底30位为测量大小。
用位运行模式为了提高效率。
测量模式分三种:
1,EXACTLY:精确模式,指定控件具体大小,系统默认也是这种模式。
2,AT_MOST:最大值模式,控件尺寸不超过某个值。
3,UNSPECIFIED:想多大就多大,通常情况下,绘制自定义View时用。
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub mMeasureHeigth = MeasureSpec.getSize(heightMeasureSpec); mMeasureWidth = MeasureSpec.getSize(widthMeasureSpec); setMeasuredDimension(mMeasureWidth, mMeasureHeigth); initView(); }
View的绘制:onDraw()方法,通过Canvas对象进行绘图。
ViewGroup的测量:当为wrap_content时,对子View进行历遍获取所以子View大小,决定自己大小。其他模式则通过具体值。
ViewGroup的绘制:通常不需要,但会调用dispatchDraw()方法来绘制子View。
自定义View:
1.对现有控件进行扩展
2.通过组合来实现新控件
3.重写View来实现全新控件
详细在下一篇文章。O(∩_∩)O哈哈~
相关文章推荐
- 电子商务类网站CDN加速方案
- HA高可用集群
- 关于网站主栏目多类别(或多子类)下的数据的准确显示
- 最全最强解析:支付宝钱包系统架构内部剖析(架构图)
- 技术揭秘12306改造(二):探讨12306两地三中心混合云架构
- Yahoo!网站性能最佳体验的34条黄金守则(转载)
- 基于JavaScript实现 网页切出 网站title变化代码
- Google镜像网站全(4-3更)
- Google镜像网站全(4-3更)
- 基于JavaScript实现 网页切出 网站title变化代码
- 大型网站VS外星人智慧
- 全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗
- 全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗
- 网站日志流量复杂分析
- 一些电子书网站
- 深入分析 iBATIS 框架之系统架构与映射原理
- 前端菜鸟------自适应网站与响应式网站傻傻分不清
- 1. 从系统架构到Hello World
- 配置LVS + Keepalived高可用负载均衡集群之图文教程
- 京东咚咚架构演进