`

2012.06.28(2)——— android onMeasure和onLayout

 
阅读更多
2012.06.28(2)——— android onMeasure和onLayout
参考:http://blog.csdn.net/qinjuning/article/details/7110211

1. onMeasure 我的大小
a. 属于View的方法,用来测量自己和内容的来确定宽度和高度 
b. view的measure方法体中会调用onMeasure 
c. MeasureSpec有3种模式分别是UNSPECIFIED, EXACTLY和AT_MOST, 那么这些模式和我们平时设置的layout参数fill_parent, wrap_content有什么关系呢。经过代码测试就知道,当我们设置width或height为fill_parent时,容器在布局时调用子view的measure方法传入的模式是EXACTLY,因为子view会占据剩余容器的空间,所以它大小是确定的。而当设置为wrap_content时,容器传进去的是AT_MOST, 表示子view的大小最多是多少,这样子view会根据这个上限来设置自己的尺寸。当子view的大小设置为精确值时,容器传入的是EXACTLY
d. 在这个方法在必须调用setMeasureDimension 方法来告诉本View的Container类(各种Layout类型)所需占据的大小,如果没有设置setMeasureDimension ,Layout将会抛出异常。
e. 调用流程 
e.1 设置本View视图的最终大小,该功能的实现通过调用setMeasuredDimension()方法去设置实际的高(对应属性: mMeasuredHeight)和宽(对应属性:mMeasureWidth) 
e.2 如果本视图是个ViewGroup类型,则循环遍历子view的measure()方法

2、onLayout  我的位置
a. 属于ViewGroup的方法,用来为当前ViewGroup的子元素的位置和大小 
b. View的layout方法体中会调用onLayout 
c. 调用流程
c.1 设置该View视图位于父视图的坐标轴,即mLeft,mTop,mLeft,mBottom(调用setFrame()函数去实现)
c.2 如果该View是ViewGroup对象,需要实现onLayout方法,对每个子视图进行布局,调用该子视图的layout()方法去设置它的坐标值。





分享到:
评论

相关推荐

    2011.09.27(2)——— android ImageView上下同时拉伸的效果

    这篇2011年的博客文章"2011.09.27(2)——— android ImageView上下同时拉伸的效果"探讨了如何实现一个自定义的ImageView,使得图像在垂直方向上能够同时在顶部和底部进行拉伸,以达到特定的视觉效果。这种效果通常...

    博客<FlowLayout详解(一)——onMeasure()与onLayout()>对应源码

    博客《FlowLayout详解(一)——onMeasure()与onLayout()》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/47029169

    2011.09.30——— android ImageView放大缩小

    标题“2011.09.30——— android ImageView放大缩小”涉及到的是Android开发中的一个关键组件ImageView的使用技巧,尤其是关于图像缩放的功能。在Android应用开发中,ImageView是展示图片的常用控件,它允许我们加载...

    安卓Android源码——android平台仿pinterest瀑布流展现方式实现.rar

    本压缩包提供的"安卓Android源码——android平台仿pinterest瀑布流展现方式实现.rar",旨在帮助开发者理解和实践这种布局的实现方法。以下是关于这一主题的详细知识讲解。 首先,我们需要了解瀑布流布局的基本原理...

    安卓Android源码——android-flip 类似Flipboard翻转动画的实现.zip

    这涉及到重写`onDraw()`方法,以及可能的`onMeasure()`和`onLayout()`方法,以控制视图的绘制和布局。自定义View允许开发者精确地控制动画每一帧的绘制,实现3D翻转效果。 2. **Android动画库**:Android提供了一些...

    Android 重写ViewGroup 分析onMeasure()和onLayout()方法

    Android 重写ViewGroup 中onMeasure()和onLayout()方法详解 Android 中的 ViewGroup 是一个抽象类,继承自 View,提供了基本的布局管理功能。为了提供更好的自定义布局,需要重写 ViewGroup 中的两个重要方法:...

    Android View 的onMeasure方法详解和例子解释

    在Android开发中,`onMeasure()`方法是布局和视图尺寸计算的核心,它负责确定一个View的精确宽度和高度。本文将深入解析`onMeasure()`的工作原理,通过一个实例来帮助理解这一关键过程。 首先,`onMeasure()`方法在...

    android自定义组件(七) onMeasure测量尺寸

    总之,理解和掌握`onMeasure`对于Android开发者来说至关重要,因为它是我们创建自定义组件并确保其在不同设备上表现一致的基础。通过精确地控制组件尺寸,我们可以实现更加灵活和高性能的界面。

    Android下如何理解onMeasure,onLayout的过程

    onLayout在Android中view如何完成绘制这个过程介绍了很多,但是很多理论化的东西,最近重新整理一下,通俗的讲解一下。View绘制过程就好比你向银行贷款, 在Android中view如何完成绘制这个过程介绍了很多,但是很多...

    自定义view,父容器无限onmeasure、 onlayout

    然而,自定义View时如果不谨慎处理测量(onMeasure)和布局(onLayout)过程,可能会导致性能问题,就像标题和描述中提到的情况。在本案例中,一个自定义View在onDraw方法中调用了setLayoutParams,进而触发了无限的...

    android自定义veiw——波浪线

    本文将围绕“android自定义view——波浪线”这一主题,深入探讨如何实现这样的自定义组件。 首先,我们了解自定义View的基本步骤。创建一个自定义View通常需要继承自Android的View或其子类,如ViewGroup。在这个...

    覆写onMeasure例子

    在Android中,`onMeasure()`方法用于测量View的尺寸,它决定了View的宽度和高度。通常,我们会在自定义View中覆写这个方法,以便根据内容或者特定需求计算出合适的大小。下面将详细介绍`onMeasure()`的工作原理以及...

    安卓Android源码——MyListView2.rar

    2. 阅读并理解代码,关注关键方法如`onMeasure()`, `onLayout()`, `onDraw()`, `onTouchEvent()`等,这些是自定义视图的核心部分。 3. 查看Adapter的实现,了解数据是如何被绑定到ListView上的。 4. 在你的Android...

    安卓Android源码——安卓Android 自定义头部控件,简单易用.rar

    2. **测量与布局**:重写`onMeasure()`和`onLayout()`方法来确定控件的大小和位置。这一步确保了自定义控件在不同屏幕尺寸上的适配性。 3. **事件处理**:覆盖`onTouchEvent()`来处理用户的触摸事件,或者使用`...

    安卓Android源码——MyButton1.rar

    同时,可能会有`onMeasure()`和`onLayout()`方法的覆写,以确保自定义控件的尺寸和位置计算正确。此外,`OnClickListener`或`OnTouchListener`的实现将处理用户的触摸事件,实现按钮的点击反馈。 5. **自定义属性**...

    Android源码——UI界面源码.zip

    本资源“Android源码——UI界面源码.zip”包含了一些关于Android UI界面的源代码,帮助开发者深入理解Android UI的设计原理和实现机制。下面我们将详细探讨Android UI界面的相关知识点。 首先,Android UI主要基于...

    安卓Android源码——旋转风车.zip

    在源码中,我们可能会看到`onMeasure()`和`onLayout()`方法,这是自定义View尺寸和位置布局的重要部分。`onMeasure()`用于确定视图的大小,而`onLayout()`则根据测量结果放置子视图。对于风车这样的图形,可能还需要...

    安卓Android源码——draw1.rar

    "安卓Android源码——draw1.rar"这个压缩包可能包含的是与Android图形绘制相关的源代码和资源,特别是关于"draw"的部分,这通常涉及到UI界面的渲染、视图绘制以及动画效果等核心概念。以下是对这些知识点的详细说明...

    安卓Android源码——MyImageView2.rar

    本知识点主要围绕“安卓Android源码——MyImageView2.rar”展开,探讨如何创建一个自定义的`MyImageView2`,它可能是在原生`ImageView`的基础上扩展了额外的功能或优化了性能。 1. **自定义控件基础** 自定义控件...

Global site tag (gtag.js) - Google Analytics