Android API之android.view.View.MeasureSpec
android.view.View.MeasureSpec
MeasureSpec是View的内部类
public static class MeasureSpec
MeasureSpec封装从parent传递给child的layout要求。每个MeasureSpec表示对width/height的要求。MeasureSpec由size和mode组成。可用的mode有3种:
1. UNSPECIFIED表示parent没有强加给child任何constraint。
2. EXACTLY表示parent已经确定child的精确size。
3. AT_MOST表示child可以设定为specified size之内的任何值。
MeasureSpec实现为int类型,相比object类型,降低了allocation。可以将<size, mode>元组pack和unpack为int类型。
MeasureSpec定义的常量有:
private static final int MODE_SHIFT = 30;
private static final int MODE_MASK = 0x3 << MODE_SHIFT;
public static final int UNSPECIFIED = 0 << MODE_SHIFT;
public static final int EXACTLY = 1 << MODE_SHIFT;
public static final int AT_MOST = 2 << MODE_SHIFT;
MeasureSpec定义的方法有:
public static String toString(int measureSpec) {   
    int mode = getMode(measureSpec);    
    int size = getSize(measureSpec);
StringBuilder sb = new StringBuilder("MeasureSpec: ");
    if (mode == UNSPECIFIED)   
        sb.append("UNSPECIFIED ");    
    else if (mode == EXACTLY)    
        sb.append("EXACTLY ");    
    else if (mode == AT_MOST)    
        sb.append("AT_MOST ");    
    else    
        sb.append(mode).append(" ");
    sb.append(size);   
    return sb.toString();    
}
public static int getSize(int measureSpec) {   
    return (measureSpec & ~MODE_MASK);    
}
public static int getMode(int measureSpec) {   
    return (measureSpec & MODE_MASK);    
}
public static int makeMeasureSpec(int size, int mode) {   
    return size + mode;    
}
Android API之android.view.View.MeasureSpec的更多相关文章
- 【Android API】Android 4.1 API官方文档详解
		原文:http://android.eoe.cn/topic/summary 翻译:[eoeAndroid原创团队]kris.流风而逝.贼寇在何方.snowxwyo.lsy4833406 更新日期:2 ... 
- Android API之android.content.BroadcastReceiver
		android.content.BroadcastReceiver Base class for code that will receive intents sent by sendBroadcas ... 
- Android API之android.provider.ContactsContract.RawContacts
		android.provider.ContactsContract.RawContacts Constants for the raw contacts table, which contains o ... 
- Android API之android.provider.ContactsContract
		android.provider.ContactsContract ContactsContract是联系人provider和app的contract.定义了已支持的URL和column.取代了之前的 ... 
- Android API之android.os.Parcelable
		android.os.Parcelable Interface for classes whose instances can be written to and restored from a Pa ... 
- Android API之android.widget.Filterable
		android.widget.Filterable 定义了一种可过滤的行为.Filterable接口通常有android.widget.Adapter来实现.接口Filterable中有个抽象方法 ... 
- Android API之android.content.AsyncQueryHandler
		android.content.AsyncQueryHandler A helper class to help make handling asynchronous ContentResolver ... 
- Android API之android.provider.ContactsContract.Data
		android.provider.ContactsContract.Data Constants for the data table, which contains data points tied ... 
- Android API之android.provider.ContactsContract.Contacts
		android.provider.ContactsContract.Contacts 对应contacts数据表.RawContacts的一个聚合(aggregate)代表同一个人.每个人在数据表co ... 
随机推荐
- debian禁止或者允许指定ip访问远程mysql、ssh、rsynccat /etc/xinetd.conf
			如果没有安装xinetd,安装xinetd apt-get install xinetd 然后创建配置文件 vi /etc/xinetd.d/mysqld service login { socket ... 
- JQ 使用模板
			1.首先需要添加模板JS文件, 
- gridview 空数据绑定
			private void getDataBind() { DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Colu ... 
- 设计模式 - 观察者模式(Observer Pattern) Java内置 用法
			观察者模式(Observer Pattern) Java内置 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26601659 ... 
- Eclipse开发Java程序入门,HelloWord
			今天看到一个专业的学术程序是Java写的,而我经常用的是Matalb,所以感觉十分不舒服.之前学的Java开发感觉也忘光了,所以感觉,知识必须要总结好,不然容易忘记.这也就是我写这篇文章的原因.希望能 ... 
- javascript比较两个时间大小
			//var yourtime=document.getElementById('begin_time').value; var yourtime='2010-12-10 11:12'; yourtim ... 
- Andorid之Annotation框架初使用(四)
			代替繁琐的finViewById @EActivity public class MyActivity extends Activity { // Injects R.id.myEditText @V ... 
- 简单的后台管理系统vue-cli3.0+element-ui
			前段时间在研究一个分发系统,发现vue-cli+element-ui好像是挺不错的,然后自己根据那个分发系统尝试搭建了一下 1.首先安装vue和vue-cli // 全局安装vue npm insta ... 
- CloudStack 4.0.2 vRouter导致重启后状态不正常
			最近总玩CloudStack + KVM,发现在重启CloudStack服务后,host(kvm)的状态老是为alert.日志里出现如下错误提示: ERROR [agent.manager.Agent ... 
- 运行Hadoop的示例程序WordCount-Running Hadoop Example
			In the last post we've installed Hadoop 2.2.0 on Ubuntu. Now we'll see how to launch an example ma ... 
