`

Android 是怎样画视图的

 
阅读更多
当一个activity取得焦点时,它将被要求去画出它的布局(layout),android将获得画这个视图的进程,但这个activity必须

要提供它的布局结构的根节点。

画布局开始于这个布局的根节点。他必须检测和画出这个布局结构(layout tree)。沿着这个布局结构画出布局

每个视图组(view group)负责画出它的每个子视图(用draw()),并且视图(view)负责画出他自己。

因为布局树是倒过来的,所以父节点比他的子节点先画,兄弟节点按他的先后顺序被画出。

    画一个视图要经过两个处理:一个检测处理和一个布局处理。检测处理由measure(int, int)实现从头到尾的检测视图树

通过递归遍历这个视图树。在检测处理的最后每个视图将会储存它的检测结果。第二个的布局处理发生在layout(int, int, int, int)

他也是从头到尾的,在这个过程中,每个父节点将会通过上一个检测处理得到的元素尺寸定位它的子节点的位置。

   当一个视图的measure()返回时,它的getMeasuredWidth() 和 getMeasuredHeight()的值必须被设定,用于它的所有子节点使用。

这个检测处理过程用两个类去交流数据:这个View.MeasureSpec类用于告诉他们的父节点他们想要怎样的尺寸和位置。然后基本LayoutParams类将

用于描述视图想要多大的长和宽。每个元素的尺寸必须指定以下三个之一:

1.精确的值

2.LL_PARENT。这意味着View想设定为同它的父结点一样大

3.WRAP_CONTENT 只需要能达到它的内容显示 

每一个ViewGroup类有相应的LayoutParams子类,用来描述它的尺寸和定位信息

MeasureSpec被用来自顶向下(通过View tree)传递各种尺寸和定位需求。

每一个MeasureSpec能够是下列3种模型中的一个:

1.UPSPECIFIED。

2.EXACTLY。

3.AT_MOST

参考:
http://blog.csdn.net/qinjuning/article/details/7110211
分享到:
评论

相关推荐

    Android 动画之视图动画

    视图动画(View Animation)是Android提供的一种基础动画系统,主要用于改变视图的位置、大小、透明度等属性,为用户界面增添动态效果。本教程将深入探讨Android视图动画的实现原理和代码实践。 一、视图动画简介 ...

    android视图动画属性动画详解

    视图动画和属性动画是Android系统提供的两种主要动画机制。本文将详细解析Android视图动画和属性动画的概念、使用方法及其差异。 **视图动画**(View Animation)是Android早期版本中引入的动画系统,它基于`...

    Android程序技术:画廊视图.pptx

    Android 程序技术 本节课程内容:Gallery 高级控件-画廊视图 高级控件-画廊视图 Advanced controls - Gallery view 画廊Gallery能够水平方向显示内容,并且可用手指直接拖动图片移动,一般用来浏览图片,被选中的...

    Android 带动画的底部弹出视图

    【Android 带动画的底部弹出视图】 在Android应用开发中,用户交互界面的设计是至关重要的。底部弹出视图(Bottom Sheet)是一种常见的交互元素,它可以从底部向上滑动显示更多的内容或者功能选项,常用于展示详情...

    Android 仿小米日历周月视图切换

    在Android开发中,创建一个类似小米日历的周月视图切换功能是一项常见的需求,它涉及到用户界面(UI)设计、时间与日期处理以及自定义控件的开发。本项目"Android 仿小米日历周月视图切换"旨在实现这样一个功能,...

    Android仿MIUI周视图月视图切换日历

    本项目“Android仿MIUI周视图月视图切换日历”旨在实现一个简洁的日历功能,允许用户在周视图和月视图之间自由切换,为开发者提供了参考实现。 首先,我们要理解日历的基础结构。在Android中,我们可以使用`java....

    Android 自定义View视图

    在Android应用开发中,自定义View视图是一个重要的技术,它允许开发者根据特定需求创建独一无二的用户界面元素。本文将深入探讨如何通过继承View类来实现一个自定义的罗盘界面,以帮助开发者理解自定义视图的工作...

    android下实现视图切换

    在Android开发中,视图切换是一项基础且重要的任务,它涉及到用户界面的动态更新和交互体验的提升。本文将深入探讨如何在Android环境下实现视图切换,并以模仿Launcher的工作空间(Workspace)为例进行讲解。 首先...

    Android画廊视图的3D效果

    本示例程序是一个画廊视图的一个3D效果图,有对3D的同学可以多多的学习下。当鼠标点击图片移动时图片也随着移动,立体效果很好希望对大家有所帮助。大家可以多多的学习下。 建议开发童鞋使用跨平台开发工具——统一...

    android 月视图与周视图切换日历控件

    在Android开发中,创建一个能够实现月视图与周视图切换的日历控件是一项常见的需求,这样的控件可以提供用户友好的界面,方便他们在不同的时间尺度上查看和管理事件。"android-collapse-calendar-view-develop"这个...

    android端入门视图实例集锦

    在Android开发中,视图(View)是构建用户界面的基础元素,它们负责处理用户的交互和显示数据。本教程集合了Android端的一些基本视图操作实例,涵盖了ListView、Spinner以及ImageSwitch这三个常用组件,旨在帮助初学...

    android金币掉落动画

    总结来说,实现"android金币掉落动画"涉及到的知识点包括:Android的动画系统(属性动画和视图动画)、`ObjectAnimator`或`TranslateAnimation`的使用、插值器的应用、动画监听和事件处理,以及在不同API级别的兼容...

    Android 动画的简单实用——视图动画

    视图动画(View Animation)是Android早期提供的动画机制,它通过对视图进行一系列连续的变换来模拟动画效果。在本篇文章中,我们将深入探讨Android视图动画的基本概念、实现方式以及如何在实际项目中应用。 视图...

    Android晃动动画例子

    "Android晃动动画例子"是一个示例项目,它展示了如何创建一个让视图左右晃动的动画效果。这种效果常见于错误提示、撤销操作或者游戏中的某些交互。下面我们将深入探讨如何在Android中实现这样的晃动动画。 1. **...

    android气泡动画实现

    综上所述,实现"android气泡动画实现"需要深入理解Android的动画系统,结合触摸事件处理和自定义视图,通过属性动画或帧动画技术来创建点击后的爆炸效果。通过不断优化和调整,我们可以为用户提供更加生动有趣的交互...

    android自定义视图 比例图

    在Android开发中,自定义视图是实现独特用户界面效果的重要手段。本示例中的"android自定义视图 比例图"着重讲解如何创建一个由三部分组成的视图:中间的文字、文字周围的圆圈以及最外层的圆环。这种视图常用于展示...

    Android录音的声波动画

    在Android开发中,创建一个能够显示声波动画的录音应用是一项有趣的挑战,它结合了多媒体处理、用户界面设计以及实时数据可视化。以下是对这个"Android录音的声波动画"项目的关键知识点的详细解释: 1. **Android ...

    android视图组和布局

    ### Android视图组和布局详解 #### 一、Android的屏幕元素体系 在Android开发中,屏幕元素体系的构建基于视图(View)与视图组(ViewGroup)。视图组是一个特殊的视图,它的主要功能是容纳并管理一系列的子视图。...

    Android-InfiniteCards可自定义动画的Android卡片切换视图

    《Android-InfiniteCards:打造可自定义动画的卡片切换视图》 在Android应用开发中,用户界面的设计和交互体验是至关重要的。Android-InfiniteCards项目提供了一个创新的解决方案,它允许开发者创建一个无限滚动、...

    自定义Android日历周视图

    在Android开发中,自定义日历视图是一个常见的需求,特别是在构建日程管理或时间规划类应用时。本文将深入探讨如何实现一个自定义的Android日历周视图,并结合ViewPager实现无限滑动功能。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics