Android自定义控件
2016-06-12 21:06
459 查看
一、MeasureSpec
获取测量大小:MeasureSpec.getSize(measureSpec)
获取测量模式:MeasureSpec.getMode(measureSpec)
SpecMode:
- UNSPECIFIED:未指定,没有限制
- EXACTLY:精确模式。对应于LayoutParams中的match_parent和具体数值两种模式;
- AT_MOST:最大模式。对应于LayoutParams中的wrap_content,View的大小不能大于这个值;
普通View的MeasureSpec和父容器的MeasureSpec和自身的LayoutParams,以及View的margin和padding有关
View采用固定宽/高时,无论父容器是什么模式,View都是精确模式,大小遵循LayoutParams的值;
当View采用match_parent时,如果父容器是精确模式,View是精确模式,大小是父容器剩余空间大小,如果父容器是最大模式,View是最大模式,大小不超过父容器剩余空间大小;
当View采用wrap_content时,无论父容器是精确模式还是最大模式,View都是最大模式,大小不超过父容器剩余空间大小;
二、自定义View的分类
1.继承View,重写onMeasure和onDraw方法
2.继承特定的View
3.继承ViewGroup,重写onMeasure和onDraw方法
4.继承特定的ViewGroup
获取测量大小:MeasureSpec.getSize(measureSpec)
获取测量模式:MeasureSpec.getMode(measureSpec)
SpecMode:
- UNSPECIFIED:未指定,没有限制
- EXACTLY:精确模式。对应于LayoutParams中的match_parent和具体数值两种模式;
- AT_MOST:最大模式。对应于LayoutParams中的wrap_content,View的大小不能大于这个值;
普通View的MeasureSpec和父容器的MeasureSpec和自身的LayoutParams,以及View的margin和padding有关
View采用固定宽/高时,无论父容器是什么模式,View都是精确模式,大小遵循LayoutParams的值;
当View采用match_parent时,如果父容器是精确模式,View是精确模式,大小是父容器剩余空间大小,如果父容器是最大模式,View是最大模式,大小不超过父容器剩余空间大小;
当View采用wrap_content时,无论父容器是精确模式还是最大模式,View都是最大模式,大小不超过父容器剩余空间大小;
二、自定义View的分类
1.继承View,重写onMeasure和onDraw方法
2.继承特定的View
3.继承ViewGroup,重写onMeasure和onDraw方法
4.继承特定的ViewGroup
相关文章推荐
- Android ListView的优化
- Android之PopWindow
- (OK) Android —— gem5跑bench(Android)过程记录 + vncviewer
- 将html5变身Android APP之phonegap的使用
- android 隐藏系统键盘
- 百度地图API出现如下报错,系统时间问题
- Android开发中使用fastJSON将json格式的数据快速解析生成实体类并附上实体类生成器
- android容联云IM的SDK下载及将FullDemo引入工程(提供引入后demo的下载)
- [Android]使用Intent跳转至桌面首页
- Android高性能ORM数据库DBFlow入门
- Android root 原理
- android 跨进程调用service学习(二)
- AndroidStudio--Error converting bytecode to dex
- Android入门--项目中添加页面及页面跳转
- activity-alias详解及应用
- Android 5种存储方式
- Android: Sqlite基本操作
- 【Android 基础】使用getActionBar()报空指针异常的解决方法
- android产品研发-->总结(持续更新中)
- Android开发艺术探索——学习笔记_View事件体系