3.2.Android控件架构与自定义控件详解之View的测量
来源:互联网 发布:cs软件怎么用 编辑:程序博客网 时间:2024/04/28 16:28
作为一个安卓开发工程师,必须精通View的绘制,所以在绘制前先学习View的测量
3.2 View的测量
测量View的过程主要在onMeasure()方法中进行。
Android系统提供了一个设计短小精悍却功能强大的类—MeasureSpec类,通过它测量View,MS是一个32位的int值,其中高两位为测量模式,低30位为测量的大小,便于提高并优化效率;
测量模式分为以下三种:
第一种 EXACTLY
即精确模式,宽和高指定具体数值或者指定为match_parent属性时(占据父View的大小),系统使用该模式;
第二种 AT_MOST
即最大值模式,宽和高指定为warp_content时,控件的大小一般随子控件或内容的变化而变化,此控件的尺寸只要不超过父控件允许最大尺寸即可;
第三种 UNSPECIFIED
该模式通常情况下在自定义View时使用;
View类默认的onMeasure()方法只支持EXACTLY模式,所以在自定义控件时不重写onMeasure()方法的话,必须使用EXACTLY模式。否则必须重写onMeasure()方法;
</pre><pre name="code" class="java"><span style="font-size:12px;"> //对高的自定义 private int measureHeight(int measureSpec) { int result = 0; //获取测量模式 int specMode = MeasureSpec.getMode(measureSpec); //获取View大小尺寸 int specSize = MeasureSpec.getSize(measureSpec); //判定模式种类 if (specMode == MeasureSpec.EXACTLY) { //默认模式,即为指定大小 result = specSize; } else { //自定义大小 result = 200; if (specMode == MeasureSpec.AT_MOST) { //当属性为wrap_content的时候,选择最小尺寸 result = Math.min(result, specSize); } } return result; }</span>
对宽的自定义和对高的一致,不必多写,必须指出的是,如果没有判定AT_MOST模式的那块代码,当你给予view wrap_content的属性时,它将默认充满整个View
如果给了,效果如下图:
显而易见,显示的是我们所自定义的大小尺寸。
这样一来,View的测量就变得简单的很多,以上代码可以作为模版使用,至少我会用。
0 0
- 3.2.Android控件架构与自定义控件详解之View的测量
- 3.4.Android控件架构与自定义控件详解之ViewGroup的测量与绘制
- 3.3.Android控件架构与自定义控件详解之View的绘制
- Android控件架构与view,viewgroup的测量和绘制
- 3.5.Android控件架构与自定义控件详解之自定义View(一)
- 3.5.Android控件架构与自定义控件详解之自定义View(二)
- 3.5Android控件架构与自定义控件详解之自定义View(三)
- 3.5.Android控件架构与自定义控件详解之自定义View(四)
- Android控件架构与自定义控件详解(一)——Android控件架构与View的绘制原理
- Android控件架构与自定义控件详解
- Android控件架构与自定义控件详解
- Android控件架构与自定义控件详解
- Android 控件架构与自定义控件详解
- Android控件架构及View、ViewGroup的测量和绘制
- Android控件架构与自定义控件详解(二)——自定义View
- Android自定义控件(一)--View的测量
- Android自定义控件——View的测量模式
- 3.1.Android控件架构与自定义控件详解之控件架构
- lua 面向对象编程
- 创建一个中国象棋的阿法狗——阿法象(0)
- ueditor不自动加P,不转义解决方法
- DedeCMS提示Call to a member function GetInnerText()的解决办
- 详解CSS中clear属性both、left、right值的含义
- 3.2.Android控件架构与自定义控件详解之View的测量
- mysql 中的varchar255 uft-8 的格式到底能放多少汉字
- 美国金融体系
- md5不可逆?明文和密文唯一对应吗?
- 黑苹果的初安装与升级 VMware12+mac os x 10.9+升级+VMware Tools安装
- matlab 文件夹操作
- 怎么样配置国外代理服务器
- 213. House Robber II
- 如何简单使用代理服务器上网