`
vssupermadman
  • 浏览: 23206 次
社区版块
存档分类
最新评论

Android界面View及ViewGroup

 
阅读更多



从上图,我们可以理出大致的显示过程如下:
【1】ActivityManagerService创建Activity线程,激活一个activity
【2】系统调用Instrumentation.newActivity创建一个activity
【3】Activity创建后,attach到一个新创建的phonewindow中。这样Activity获取一个唯一的WindowManager服务的实例
【4】Activity创建过程中使用setcontentView设置用用户UI,这些VIEW被加入到PhoneWindow的 ContentParent中。
【5】Activity线程继续执行,当执行到Activity.makeVisible是将根view DecoView加入到WindowManger中,WindowManger实全会为每个DecoView创建对应的ViewRoot
【6】每个ViewRoot拥有一个Surface,每个Surface将会调用底层库创建图形绘制的内存空间。这个底层库就是 SurfaceFlinger。SurfaceFlinger同时也负责将个View绘制的图形合到一块(按照Z轴)显示到用户屏幕。
【7】如果用户直接在Canvas上绘制,实际上它直接操作Surface。但对每个View的变更,它是要通知到ViewRoot,然后 ViewRoot获取Canvas。如果绘制完成,surfaceFlinger得到通知,合并Surface成一个Surface到设备屏幕。
从上面的图形输出过程分析,我们可以知道真正显示图形的实际上跟Activity没有关系,完全由WindowManager来决定。 WindowManager是一个系统服务,因此可以直接调用这个服务来创建界面,并且更绝的是Dialog、Menu也是有WindowManager 来管理的。另外一个我们也可以看到,最底层都是Surface来,因此,常见开发游戏的人都推荐你使用SurfaceView来创建界面。
  • 大小: 48.7 KB
分享到:
评论
2 楼 woyaowenzi 2013-07-25  
两个问题:
1. DecoView写错了,是DecorView;
2. Activity.makeVisible将DecorView添加到WindowManger中:这个地方我在跟代码时,发现已经在wm.addView(decor, l);这句话时,被添加进去了。
太复杂了,晕头转向。
1 楼 woyaowenzi 2013-07-24  
这篇文章也不错。

相关推荐

    Android双向界面滑动ViewGroup源码包

    Android实现的ViewGroup双向滑动界面效果,这在当下的各种android客户端应用中使用广泛,操作也是比较顺手的一种方式,本滑动界面中设置右滑的菜单View、设置主界面View、并设置了菜单和内容边界,定义好这些为下...

    android viewgroup view 源码

    在Android开发中,`ViewGroup`和`View`是构建用户界面的核心组件。`View`是所有UI元素的基类,而`ViewGroup`则是一个特殊的`View`,它能够包含多个子`View`,形成了Android UI的层级结构。这份源码提供了深入理解这...

    Android中的View与ViewGroup绘制过程,手势监听顺序与使用

    在Android开发中,View和ViewGroup是构建用户界面的基础组件,它们共同负责UI的绘制和交互。这篇博客将深入探讨这两个关键概念,以及手势监听的相关顺序和应用。 首先,我们来理解View。在Android中,View是所有UI...

    Android中使用自定义ViewGroup的总结

    总结来说,自定义ViewGroup在Android开发中扮演着重要角色,它允许开发者超越标准布局组件的限制,实现更加灵活和复杂的界面设计。通过理解并掌握自定义ViewGroup的基本流程和注意事项,开发者可以创建出满足特定...

    android触屏事件之activity,view,viewgroup

    在Android开发中,触屏事件处理是用户交互的核心部分,涉及到Activity、View和ViewGroup这三个关键组件。本文将深入探讨这些组件在触屏事件处理中的角色和机制。 首先,我们来理解Activity。Activity是Android应用...

    AndroidAutoLayout自动换行viewgroup

    在Android开发中,UI设计是至关重要的一环,而布局管理器则是实现美观、高效界面的关键。"AndroidAutoLayout"是一个专为Android平台设计的自定义ViewGroup,它提供了自动换行的功能,使得在有限的屏幕空间内展示多个...

    Android-可以指定圆角的ViewGroup

    在Android开发中,创建具有指定圆角的ViewGroup是一个常见的需求,这可以帮助开发者设计出更加美观和具有现代感的用户界面。"Android-可以指定圆角的ViewGroup"这个主题聚焦于如何在Android应用中实现自定义的布局,...

    android界面布局详解

    - **运行时实例化**:这种方法是在程序运行时动态创建和管理View及ViewGroup。虽然灵活性较高,但维护和调试相对复杂。 3、XML布局文件及加载资源 XML布局文件包含了界面元素及其属性。每个元素有ID属性,用于唯一...

    Android 手把手教您自定义ViewGroup(一)

    在Android开发中,自定义ViewGroup是提升应用界面复杂度和交互体验的重要手段。本教程将引导您逐步了解如何从零开始创建一个自定义的ViewGroup。我们将通过分析标题"Android 手把手教您自定义ViewGroup(一)"以及...

    Android事件处理机制ViewGroup的事件传递

    总之,`ViewGroup`的事件传递是Android UI编程中的重要一环,理解并掌握这一机制有助于开发者创建更加灵活和用户友好的应用界面。通过深入学习和实践,开发者可以利用事件分发机制实现各种复杂交互效果,提升应用的...

    android 获取界面部分view,view截图,生成bitmap图片

    Android的UI系统基于View和ViewGroup构建,一个ViewGroup可以包含多个View。当我们说“获取界面部分view”时,实际上是指选取特定的View实例,这可能是一个按钮、文本框、自定义视图等。我们可以通过View的`...

    android 自定义View界面大合集

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。"Android 自定义View界面大合集"的主题涵盖了这个领域的广泛知识点,包括但不限于...

    Android特效开发(可伸缩View带互相挤压效果)下

    首先,我们需要理解Android中的View和 ViewGroup。View是Android UI的基本元素,它可以是按钮、文本框等单一控件;而ViewGroup则是容器,用于组织和管理多个View,比如LinearLayout、RelativeLayout等。在这个特效中...

    Android视图控件架构分析之View、ViewGroup

    在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过ViewGroup和View便形成了控件树,各个ViewGoup对象和View对象就是控件树中的节点。在控件树中,以树的...

    Scroller_view_ViewGroup

    Scroller_view_ViewGroup是一个关于Android自定义滚动视图的专题,主要探讨如何在Android中创建一个自定义的ViewGroup,并实现平滑滚动的效果。在这个专题中,开发者将学习到如何利用Scroller类来控制ViewGroup的...

    从源码解析Android中View的容器ViewGroup

    在Android开发中,ViewGroup是View的容器,它充当了布局管理器的角色,负责组织和管理屏幕上的多个视图(View)。ViewGroup是所有布局(如LinearLayout、RelativeLayout等)的基类,它允许开发者在应用界面中动态地...

    使用代码编写Android界面布局源代码

    总之,Android界面布局的代码实现涉及`View`、`ViewGroup`、事件监听和布局参数等多个方面。通过理解和实践,开发者可以更加灵活地设计和控制应用程序的用户界面。对于初学者而言,这是一个很好的学习起点,对于经验...

    实现侧滑上下滑自定义ViewGroup

    在Android开发中,自定义ViewGroup是实现复杂交互和界面设计的重要手段,它允许开发者根据需求定制特定的布局和交互行为。"实现侧滑上下滑自定义ViewGroup"的主题涉及了Android开发中的几个核心概念,包括自定义View...

    创建定制的ViewGroup

    在Android开发中,`ViewGroup`是Android UI框架的核心组成部分,它是`View`类的子类,用于组织和管理多个`View`对象。创建自定义的`ViewGroup`可以帮助开发者实现复杂的布局效果,提供更高效的性能优化,以及满足...

Global site tag (gtag.js) - Google Analytics