Android 测量流程详解
Android View measure的最终结果是把layout_width和layout_height所设置的相对值转换为具体值的过程。MeasureSpec的种类分为MeasureSpec.EXACTLY(确定的)、MeasureSpec.AT_MOST(最多)、MeasureSpec.UNSPECIFIED(没有限制)。对于一个View来说它的宽和高各有属于自己的specMode,至于其具体作用后面会有说说明,先来说说这三个变量的作用:
1、MeasureSpec.EXACTLY:”确定的“,意思是parentView希望childView的大小是确定的,为specSize.
2、MeasureSpec.AT_MOST:“最多”,意思是childView的大小最多是specSize指定的值。
3、MeasureSpec.UNSPECIFIED:“没有限制”,此时View的设计者可以根据自身的特性设置视图的大小。
measureSpec的参数是由parentView传递给childView的,目的是告诉childView 可以提供的实际尺寸。MeasureSpec提供了三个方法
1)makeMeasureSpec(int size,int mode):size参数由程序员自己设定,mode必须是specMode的三个值中的一个
2)getMode(int measureSpec):见名知意,方法返回specMode的三个值中的一个,注意方法参数measureSpec,这个参数的值是怎么得来的呢?正是由makeMeasureSpec方法计算出来的
3)getSize(int measureSpec):获取View的大小,方法
Android 测量流程详解相关推荐
- Android事件流程详解
Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...
- 《Android游戏开发详解》一1.8 控制流程第2部分——while和for循环
本节书摘来异步社区<Android游戏开发详解>一书中的第1章,第1.8节,译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.8 ...
- Android App启动流程详解
前言:在之前的文章中已经写了apk的打包流程.安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程.经过今天的梳理以后咱们就可以对apk包是怎么编译生成的.apk是怎么被安装到安卓手机的 ...
- android zygote启动流程,Android zygote启动流程详解
对zygote的理解 在Android系统中,zygote是一个native进程,是所有应用进程的父进程.而zygote则是Linux系统用户空间的第一个进程--init进程,通过fork的方式创建并 ...
- View的绘制-draw流程详解
目录 作用 根据 measure 测量出的宽高,layout 布局的位置,渲染整个 View 树,将界面呈现出来. 具体分析 以下源码基于版本27 DecorView 的draw 流程 在<Vi ...
- View的绘制-layout流程详解
目录 作用 根据 measure 测量出来的宽高,确定所有 View 的位置. 具体分析 View 本身的位置是通过它的四个点来控制的: 以下涉及到源码的部分都是版本27的,为方便理解观看,代码有所删 ...
- View系列 (三) — Measure 流程详解
Measure 流程详解 一.概述 二.单一 View 的测量流程 1. 流程图 2. 源码分析 三.ViewGroup 的测量流程 1. 流程图 2. 源码分析 一.概述 测量过程分为 View的m ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- 杂志订阅管理系统c++_电池管理系统BMS功能安全开发流程详解
点击上面 "电动知家"可以订阅哦! BMS功能安全开发流程详解 BMS和ISO26262 - BMS & ISO26262简介 BMS即Battery Management ...
最新文章
- http状态404 vscode_VS Code 调试完全攻略(5):基于浏览器的 React 应用
- R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象
- [导入]Gentoo版Linux操作系统的前世今生 (3)
- 桌面壁纸的deepin或者uos水印如何去除
- (最新版2020)Java环境变量配置
- angular 居中_垂直居中的N种方法
- 仪器仪表的标定、检定、校准、校验的区别【图文详解】
- 搭建本地服务器中遇到无法启动FTP站点问题
- 为何学习大数据,要先学Java
- 2020电信宽带费用_电信宽带套餐价格表2020
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte解决办法
- java 循环字母_java循环26个字母
- 章节十六:编码和文件读写
- Navicate管理工具的使用
- AE怎么制作流体文字效果?这波教程我真学会了
- JavaScript(js)的多次弹窗
- 企业信息化建设,不要轻易选择小众系统
- 鸢尾花python分类_鸢尾花分类——Python机器学习起步
- python-selenium爬取摩点客户购买信息(前端分析+爬虫代码)
- java-php-python-ssm艾灸减肥管理网站计算机毕业设计
热门文章
- javaSE I/O
- NLP自然语言处理系列- week6-文本生成案例(4)(PGN模型代码)
- min,max的优化
- 火影忍者ol手游今天未能连接服务器,火影忍者ol游戏上不去怎么办_火影忍者ol登录/安装失败解决方法...
- 2021浙江高考成绩名次查询,2020年浙江高考成绩位次排名及一分一段表查询
- 2021年新高考八省联考湖南成绩查询,八省联考湖南还没公布成绩?新高考模拟志愿填报,你准备好了吗?...
- jsp----JSP + Servlet + JavaBean开发模式
- Erlang项目编译及防止反编译
- 《分布式机器学习》-刘铁岩:全书汇总
- Netty框架学习之(一):Netty框架简介