- 浏览: 600169 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。
它有三种模式:
UNSPECIFIED(未指定):父元素不对子元素施加任何束缚,子元素可以得到任意想要的大小;
EXACTLY(完全):父元素决定子元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;
AT_MOST(至多):子元素至多达到指定大小的值。
它常用的三个函数:
1.static int getMode(int measureSpec):根据提供的测量值(格式)提取模式(上述三个模式之一)
2.static int getSize(int measureSpec):根据提供的测量值(格式)提取大小值(这个大小也就是我们通常所说的大小)
3.static int makeMeasureSpec(int size,int mode):根据提供的大小值和模式创建一个测量值(格式)
这个类的使用呢,通常在view组件的onMeasure方法里面调用。
看看它的使用吧,ListView.measureItem(View child)
首先一个我们常用到的一个有用的函数,View.resolveSize(int size,int measureSpec)
注意,使用EXACTLY和AT_MOST通常是一样的效果。
如果你要区别他们,那么你就要使用上面的函数View.resolveSize(int size,int measureSpec)返回一个size值,然后使用你的view调用setMeasuredDimension(int,int)函数。
继承View,实现自己想要的组件,那么需要使用到setMeasuredDimension这个方法,这个方法决定了当前View的大小,请看代码:
它有三种模式:
UNSPECIFIED(未指定):父元素不对子元素施加任何束缚,子元素可以得到任意想要的大小;
EXACTLY(完全):父元素决定子元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;
AT_MOST(至多):子元素至多达到指定大小的值。
它常用的三个函数:
1.static int getMode(int measureSpec):根据提供的测量值(格式)提取模式(上述三个模式之一)
2.static int getSize(int measureSpec):根据提供的测量值(格式)提取大小值(这个大小也就是我们通常所说的大小)
3.static int makeMeasureSpec(int size,int mode):根据提供的大小值和模式创建一个测量值(格式)
这个类的使用呢,通常在view组件的onMeasure方法里面调用。
看看它的使用吧,ListView.measureItem(View child)
首先一个我们常用到的一个有用的函数,View.resolveSize(int size,int measureSpec)
public static int resolveSize(int size, int measureSpec) { int result = size; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); switch (specMode) { case MeasureSpec.UNSPECIFIED: result = size; break; case MeasureSpec.AT_MOST: result = Math.min(size, specSize); break; case MeasureSpec.EXACTLY: result = specSize; break; } return result; } private void measureItem(View child) { ViewGroup.LayoutParams p = child.getLayoutParams(); if (p == null) { p = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); } int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec, mListPadding.left + mListPadding.right, p.width); int lpHeight = p.height; int childHeightSpec; if (lpHeight > 0) { childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY); } else { childHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); } child.measure(childWidthSpec, childHeightSpec); }
注意,使用EXACTLY和AT_MOST通常是一样的效果。
如果你要区别他们,那么你就要使用上面的函数View.resolveSize(int size,int measureSpec)返回一个size值,然后使用你的view调用setMeasuredDimension(int,int)函数。
继承View,实现自己想要的组件,那么需要使用到setMeasuredDimension这个方法,这个方法决定了当前View的大小,请看代码:
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { String tag="onMeasure"; Log.e(tag,"Scroll View on measure..."); setMeasuredDimension(width, height); }
发表评论
文章已被作者锁定,不允许评论。
-
android BaseActivity与BaseFragment的封装
2016-05-19 15:06 10401 概述 多模块Activity+多Fragment 是开发 ... -
android ScrollView常用属性
2016-05-09 09:17 729android:scrollbars 设置滚动条显示。none ... -
android RecyclerView使用及详解
2016-05-04 10:35 29251.前言 话说RecyclerView已经面市很久,也在很多 ... -
android DialogFragment 创建对话框(官方推荐)
2016-04-29 14:22 9281、 概述 DialogFragment在android 3. ... -
android Intent Flags及Task相关属性
2016-04-26 09:15 644task是一个具有栈结构的容器,可以放置多个Activity实 ... -
android SQLite具体实例应用详解(SQLiteOpenHelper)
2016-04-18 19:24 841上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们 ... -
android SQLite3常用命令&语法
2016-04-18 19:01 646sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常 ... -
android View绘制相关问题总结
2016-03-28 19:27 7071.View的绘制流程分几步 ... -
android Handler Looper MessageQueue机制的原理
2016-03-22 21:09 791andriod提供了Handler和Looper来满足线程间的 ... -
android Bitmap,BitmapFactory类图像处理
2016-03-16 16:28 2394BitMap代表一张位图,扩展名可以是.bmp或者.dib。 ... -
android 三类菜单(Option) (Context) (SubMenu)学习
2016-03-14 15:23 950在Android系统中,菜单可以分为三类:选项菜单(Optio ... -
android Sqlite数据库对象模型ORMLite框架学习
2016-03-11 15:24 731在Android项目中或多或少的都会使用数据库,为了提高我们的 ... -
android AsyncTask<参数,进度值类型,返回类型>学习
2016-03-10 14:45 1206AsyncTask和Handler对比 1 ... -
android 远程图片获取和本地缓存
2016-03-10 14:32 804概述 对于客户端——服 ... -
android onSaveInstanceState和onRestoreInstanceState学习
2016-03-10 10:08 827Android中的activity通过onSaveInst ... -
android Fragment生命周期和回退栈学习以及Fragment之间通信
2016-03-10 09:31 1555会涉及到Fragment如何产生,什么是Fragment,Fr ... -
android LruCache内存缓存学习(重写sizeOf方法)
2016-03-09 19:25 1090什么是缓存? 缓存技术原理就是把用户访问的所有对象看作一个全 ... -
android ListView中的convertView缓存及使用
2016-03-09 19:12 1738一、复用convertView 首先讲下ListView的原 ... -
android 从资源角度谈Android代码内存优化
2016-03-09 18:54 742开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么 ... -
android startActivityForResult和setResult详情及Demo
2016-03-09 08:56 1074startActivityForResult与startAct ...
相关推荐
`onMeasure`方法在Android的View类中被定义,它是测量组件大小的核心方法。当一个View或ViewGroup需要确定其子视图的尺寸时,会调用这个方法。通常,自定义组件需要重写`onMeasure`以确保它们能正确地根据内容或特定...
2. **测量流程**:在`onMeasure()`中,我们需要根据MeasureSpec来确定View的尺寸,然后调用`setMeasuredDimension()`方法记录测量结果。 接下来,让我们看看如何覆写`onMeasure()`方法: ```java @Override ...
在Android的测量过程(measure)中,每个View都会收到一个MeasureSpec对象,它包含了来自父视图的测量规格。View需要根据这个规格来计算自己的尺寸,并通过`setMeasuredDimension()`方法返回。在`onMeasure()`方法中...
MeasureSpec是Android视图测量过程中的核心概念,用于确定视图的尺寸。它的本质是一个32位整数,其中高两位表示测量模式(SpecMode),低30位表示测量大小(SpecSize)。MeasureSpec提供了三种主要的测量模式:...
[快速理解android View的测量onMeasure()与MeasureSpec](http://blog.csdn.net/double2hao/article/details/51553703) ###2、Layoutparams以及MarginLayoutParams [Android开发:LayoutParams的用法]...
例如,如果需要一个宽度始终为屏幕宽度的View,可以在`onMeasure`中设置相应的MeasureSpec,然后调用`setMeasuredDimension`传入正确的测量值。 理解View的测量流程对于优化布局性能和实现复杂的自定义视图至关重要...
《Android 群英传》一书深入探讨了Android系统的核心概念,其中包括View的测量过程,这是理解自定义视图绘制的关键。本篇读书笔记将详细阐述View的测量机制,帮助开发者更好地掌握自定义视图的创建。 首先,我们...
Android 重写ViewGroup 中onMeasure()和onLayout()方法详解 Android 中的 ViewGroup 是一个抽象类,继承自 View,提供了基本的布局管理功能。为了提供更好的自定义布局,需要重写 ViewGroup 中的两个重要方法:...
在`onMeasure()` 中,开发者需要设置两个重要的参数:MeasureSpec(测量规格)和视图的实际尺寸。 MeasureSpec 是一个32位整数,包含了两个部分:模式(Mode)和大小(Size)。模式分为三种:EXACTLY(精确)、AT_...
在Android中,每个View都有一个测量过程,这个过程由`onMeasure()`方法负责。当一个View的尺寸未被明确指定时(比如在布局文件中没有设置`layout_width`和`layout_height`),系统会调用`onMeasure()`来确定View的...
开发者可能会在这个类中添加额外的功能或修改原有行为,比如覆盖`onMeasure()`方法来定制测量逻辑,或者重写`onDraw()`方法来控制文本绘制。例如,可能的实现如下: ```java public class CustomTextView extends ...
在Android开发中,`onMeasure()`方法是自定义View时非常关键的一个环节,它负责确定View的尺寸。本文将深入探讨`onMeasure()`的工作原理、调用时机以及如何在实际项目中进行有效的尺寸测量。 首先,`onMeasure()`是...
对于这个MyLinerLayout,我们可以从源码中学习以下知识点: - 如何在自定义布局中处理测量和布局过程,以确保所有子视图正确地放置和显示。 - 如何添加自定义属性,比如在XML布局文件中定义新的属性,并在Java代码中...
1. **MeasureSpec**: 在Android中,控件的大小由`MeasureSpec`对象决定,它包含两个部分:模式(Mode)和大小(Size)。模式分为三种:`EXACTLY`、`AT_MOST`和`UNSPECIFIED`。`EXACTLY`表示父控件已经指定了确切的...
Android提供了`MeasureSpec`来帮助我们处理测量过程。MeasureSpec包含两个部分:模式(Mode)和大小(Size)。模式可以是`EXACTLY`(已知大小)、`AT_MOST`(最大限制)或`UNSPECIFIED`(无限制)。我们需要根据...
在Android中,这个“眼睛”就是MeasureSpec类,它提供了精确的测量指导。 MeasureSpec是一个32位的整数,包含两种信息: 1. 高2位表示测量模式(MeasureSpec Mode),有三种模式: - EXACTLY:精确模式,当View的...
Android的测量过程遵循MeasureSpec的规则,我们需要根据MeasureSpec提供的尺寸规格来计算子View应该有的大小,然后通过`setMeasuredDimension()`方法返回。 除了这两个核心方法,我们还需要考虑触摸事件的处理,...
在measure过程中,父视图会通过MeasureSpec类向子视图传递测量规格。MeasureSpec提供了三种模式:UNSPECIFIED、EXACTLY和AT_MOST。UNSPECIFIED模式意味着父视图不对子视图有任何约束,子视图可以自由发展到期望的...
在Android开发中,获取控件的宽度和高度是常见的需求,尤其在自定义视图、动画效果或者布局计算中显得尤为重要。本篇文章将详细讲解如何在Android中获取控件的宽高,并提供测试代码,帮助开发者更好地理解这一知识点...
Android提供了`measure()`方法来完成这个任务,需要传递两个参数:MeasureSpec(用于约束测量的规则)和MeasureSpec(子视图的大小)。对于每个子视图,我们都需要测量其宽度和高度。 3. **计算总宽度和高度** ...