Android的View和ViewGroup分析】的更多相关文章

1. 概念 Android中的View与我们曾经理解的"视图"不同.在Android中,View比视图具有更广的含义,它包括了用户交互和显示,更像Windows操作系统中的window. ViewGroup是View的子类.所以它也具有View的特性,但它主要用来充当View的容器,将当中的View视作自己的孩子,对它的子View进行管理,当然它的孩子也能够是ViewGroup类型. ViewGroup(树根)和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构,V…
一般自定义view需要重写的方法 void onMeasure(int widthMeasureSpec, int heightMeasureSpec) void onSizeChanged(int w, int h, int oldw, int oldh) void onDraw(Canvas canvas) 复制代码 一般自定义ViewGroup需要重新的方法 void onMeasure(int widthMeasureSpec, int heightMeasureSpec) void o…
创建Window 在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建Window,将一个View add到WindowManager时,WindowManagerImpl创建一个ViewRoot来管理该窗口的根View.并通过ViewRoot.setView方法把该View传给ViewRoot. final void attach(Context context, ActivityThread aThread, Instrumentation…
1. 概念Android中的View与我们以前理解的“视图”不同.在Android中,View比视图具有更广的含义,它包含了用户交互和显示,更像Windows操作系统中的window. ViewGroup是View的子类,所以它也具有View的特性,但它主要用来充当View的容器,将其中的View视作自己的孩子,对它的子View进行管理,当然它的孩子也可以是ViewGroup类型. ViewGroup(树根)和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构,View类有接…
Android的UI界面都是由View和ViewGroup及其派生类组合而成的.其中,View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的.AndroidUI界面的一般结构可参见下面的示意图: 可见,作为容器的ViewGroup可以包含作为叶子节点的View,也可以包含作为更低层次的子ViewGroup,而子ViewGroup又可以包含下一层的叶子节点的View和ViewGroup.事实上,这种灵活的View层次结构可以形成非常复杂的UI布局,开…
View及ViewGroup类关系 Android View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的. View是基类,ViewGroup是它的子类.这就证明了一点,View代表了用户界面组件的一块可绘制的空间块.每一个View在屏幕上占据一个长方 形区域.在这个区域内,这个VIEW对象负责图形绘制和事件处理.View是小控件widgets和ViewGroup的父类,同时,ViewGroup 又是Layout…
---恢复内容开始--- ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 :决定childView的位置:为什么只是建议的宽和高,而不是直接确定呢,别忘了childView宽和高可以设置为wrap_content,这样只有childView才能计算出自己的宽和高. View的职责:根据测量模式和ViewGroup给出的建议的宽和高,计算出自己的宽和高:同时还有个更重要的职责是:在ViewGroup为其指定的区域内绘制自己的形态. 在自定义view中: 1.自定义Vi…
重写view: View类一般用于绘图操作,重写它的onDraw方法,但它不可以包含其他组件,没有addView(View view)方法. 重写viewgroup: ViewGroup是一个组件容器,它可以包含任何组件,但必须重写onLayout(boolean changed,int l,int t,int r,int b)和onMesure(int widthMesureSpec,int heightMesureSpec)方法. 否则ViewGroup中添加组件是不会显示的. 自定义重写L…
view概述 android绝大部分UI组件都放在android.view和android.widght包中,android的虽有UI组件都继承了View类. View类还有一个非常重要的子类:ViewGroup.ViewGroup继承了View,通常作为其他组件的容器使用,android对View和ViewGroup的设计采用了组合器模式: 即是ViewGroup属于View类,所以ViewGroup既可以包含view类,又可以包含ViewGroup类. 布局简介 android提供了两种方式…
在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过ViewGroup和View便形成了控件树,各个ViewGoup对象和View对象就是控件树中的节点.在控件树中,以树的深度来遍历查找对应的控件元素,同时,上层控件负责子控件的测量与绘制,并传递交互事件. Android控件树: AndroidUI界面架构图: 一.测量View的工具类:MeasureSpec 1.MeasureSpec包含了测量的模式和测量的…
1  背景 还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系: 看见没有,如上图中id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递归的实现. 前面<Android触摸屏事件派发机制详解与源码分析一(View篇)>文 章的3-1小节说过Android中的任何一个布局.任何…
[原文]http://blog.csdn.net/qinjuning 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(measure).是否重新需要安置视图的位置(layout).以及是否需要重绘 (draw),其框架过程如下:   步骤其实为host.layout()  接下来温习一下整个View树的结构,对每个具体View对象的操作,其实就是个递归的实…
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gamil.com 前言: 通过Android 自定义View及其在布局文件中的使用示例和Android 自定义View及其在布局文件中的使用示例(二),我们知道了如何使用自定义的View,以及Android绘制View的理论基础,其包含三个过程,测量View大小(通过onMeasure()方法实现),计算…
到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编辑器.这里之所以使用"下定决心"这个词.是由于毕竟Html编辑器使用好几年了.非常多习惯都已经养成了,要改变多年的习惯确实不易.相信这也是还有非常多人坚持使用Html编辑器的原因. 这也反应了一个现象.当人对某一事物非常熟悉时,一旦出现了新的事物想代替老的事物时,人们都有一种抵触的情绪,做…
转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 . 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(mea…
版权声明:本文出自汪磊的博客,转载请务必注明出处. 1 为什么要分析setContentView方法 作为安卓开发者相信大部分都有意或者无意看过如下图示:PhoneWindow,DecorView这些究竟都是些神马玩意?图示的层级关系是怎么来的?我们自己所写的布局是怎么加载到窗体上的?以及在上一篇<Android事件传递机制详解及最新源码分析--Activity篇>中提到过我们在调用setContentView设置布局的时候其实都是被放置在id为content的FrameLayout 布局中的…
版权声明:本文出自汪磊的博客,转载请务必注明出处. 对于稍有自定义View经验的安卓开发者来说,onMeasure,onLayout,onDraw这三个方法都不会陌生,起码多少都有所接触吧. 在安卓中,一个View显示到屏幕上基本上都是经过测量,摆放,绘制这三个过程才显示出来,那么这三个过程到底是怎么执行的呢?本文与大家一起探讨一下安卓中View的绘制流程. 一,View树绘制流程开始的地方(API23) 对一个布局进项测量,摆放,绘制肯定要有开始的地方吧,这里就直接跟大家说了,View绘制流程…
Android笔记--View绘制流程源码分析 View绘制之前框架流程分析 View绘制的分析始终是离不开Activity及其内部的Window的.在Activity的源码启动流程中,一并包含 着Activity中window的创建以及view的绘制流程. 在Activity启动流程进行到ActivityThread.performLaunchActivity时,利用反射创建了activity实例. 并且紧接着调用了activity的attach方法.进行activity的成员初始化工作.其中…
转自:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 . 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(measure)…
尊重原创: http://blog.csdn.net/yuanzeyao/article/details/46765113 差点儿相同半年没有写博客了,一是由于工作比較忙,二是认为没有什么内容值得写,三是由于自己越来越懒了吧,只是近期我对Android中View的绘制机制有了一些新的认识.所以想记录下来并分享给大家.在之后的几篇博客中,我会给大家分享例如以下的内容: 1.View中measure(),layout(),draw()函数运行过程分析,带领大家详细分析View的尺寸測量过程,位置计算…
文章中会用到部分网络资源,首先将原作者的链接附上. 但是还是会附上数量较大的关于此部分内容的自己的思考. ------------------------------------------------------------------------------------write by mcdullsin 将原作者的链接附上可以为搜索引擎评价原始作者的文章提供自己能力所及的帮助,也算是对分享自己技术的各位前辈的一种感激吧. 1.android编程下touch事件的分发和消费机制 2.andr…
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/46842891 本篇文章接着上篇文章的内容来继续讨论View的绘制机制,上篇文章中我们主要解说了View的measure过程.今天我们就来学习ViewGroup的measure过程.因为ViewGroup仅仅是一个抽象类,所以我们须要以一个详细的布局来分析measure过程,正如我上篇文章说的.我打算使用LinearLayout为例解说measure过程,假设你还没有读过上篇文章.那么建议你…
Android重点知识--View和ViewGroup与自定义控件 作者:丁明祥 邮箱:2780087178@qq.com 一.基础 ViewGroup 参考资料: Android 手把手教您自定义ViewGroup(一) View参考资料: Android 自定义View (一)系列 1.概念 Android中的View包含用户交互和显示,ViewGroup继承自View,主要充当View的容器. ViewGroup和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构,Vi…
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五)Android事件分发机制(上)Touch三个重要方法的处理逻辑][下文简称(五),请先阅读完(五)再阅读本文],我们通过示例和log来分析了Android的事件分发机制.这些,我们只是看到了现象,如果要进一步了解事件分发机制,这是不够的,我们还需要透过现象看本质,去研究研究源码.本文将从源码(基…
在分析View的工作流程时,需要先分析一个很重要的类,MeasureSpec.这个类在View的测量(Measure)过程中会用到. MeasureSpec MeasureSpec是View的静态内部类,可以理解为是一种测量规格,是一个32位int值,高2位代表SpecMode,低30位代表SpecSize,SpecMode是指测量模式,而SpecSize是指在某种测量模式下的规格大小.SpecMode有三种模式,分别为: UNSPECIFIED:父容器不对View做限制 EXACTLY:父容器…
View和ViewGroup Android的UI界面都是由View和ViewGroup及其派生类组合而成的. 其中,View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的. View对象是Android平台中用户界面体现的基础单位. View类是它称为"widgets(工具)"的子类的基础,它们提供了诸如文本输入框和按钮之类的UI对象的完整实现. ViewGroup类同样为其被称为"Layouts(布局)"的子类奠…
推荐两篇分析view绘制原理比较好的文章,感谢作者的分享. <Android应用层View绘制流程与源码分析> <View 绘制流程>…
View表示了用户界面的基本构建模块. 一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理.手机屏幕上所有看得见摸得着的都是View. Activity是四大组件中唯一一个用来和用户进行交互的组件.可以说Activity就是android的视图层. 如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View的,真正用来显示和处理事件的实际上是View. 每个Activity内部都有一个Window对象, Window对象包含了一个DecorView(实际上就是Fr…
作过Android 应用开发的朋友都知道,Android的UI界面都是由View和ViewGroup及其派生类组合而成的.其中,View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的.AndroidUI界面的一般结构可参见下面的示意图: 可见,作为容器的ViewGroup可以包含作为叶子节点的View,也可以包含作为更低层次的子ViewGroup,而子ViewGroup又可以包含下一层的叶子节点的View和ViewGroup.事实上,这种灵活的Vi…
1 UI OverView Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel.为了界面布局,A Group对象可以包含多个View或ViewGroup(由于ViewGroup是View的子类). View的子类集合主要包括各种Input 控件,ViewGroup的子类集合包括各种布局控件. 2 user Interface layout 每个应用程序的界面UI控件都是由如下图中的层次关…