• Activity Window View的关系


    http://blog.csdn.net/chiuan/article/details/7062215

    http://blog.163.com/fenglang_2006/blog/static/133662318201022104256580/

    Activity Window View的关系

    问题:

    Activity是Android得显示视图么?

    题目中它们之间的关系?

    LayoutInlater()是做什么的?

    layoutInflater.inflater()是做什么的?

     

    1、PhoneWindow才是View真正的实例化方法

    2、一个Activity构造时候会构造一个只有一个Phonewindow(窗)

    3、这个窗口有一个ViewRoot(view, viewgroup),窗口可以贴很多装饰,用layoutlayoutInflater

    其实可以这么理解ViewRoot就像C盘,每个Activity创建的只有一个viewRoot哦!,然后下面的结构就是view啦

    4、然后这个viewroot根会addView(viewgroup),可以直接setContentView()时候传入一个R.layout.ID,也可以用layoutInflater动态地生成这个view装饰体。

    5、windowManagerService接受的消息,并且回调Activity函数


    对于屏幕显示而言,整个是window,这个window里显示的东西是view(activity是逻辑上的东西,增加了生命周期管理等. 里面具体的东西也是view。而且启动activity的实现也是往window里加view),往window里加view,是通过调用WindowManager(WindowManagerImpl).addView()来实现的。

    在addView里,会为每个view创建一个viewRoot(这是逻辑上的东西,用来负责view的事件处理和逻辑处理,并和WindowsManagerService建立联系),而在WindowManagerImpl里,会维护viewRoot的数组。

    最终会调用ViewRoot.setView(),在setView里会显示该view等。在setView的实现里,会调用Session.add()来addWindow,通过这个方法,会将ViewRoot和WindowManagerService联系起来(比如说分发事件等),并且这个方法里会调用PhoneWindowManager.prepareAddWindowLw()。

    调用过程如下:

    ViewRoot.setView()->WindowManagerService.relayout()->WindowManagerService.relayoutWindow()->WindowManagerService.performLayoutAndPlaceSurfacesLocked()->WindowManagerService.performLayoutAndPlaceSurfacesLockedInner()->WindowManagerService.performLayoutLockedInner()->PhoneWindowManager.beginLayoutLw()

    然后ViewRoot.setView()->WindowManagerService.finishDrawing()陆续又会调用到一些PhoneWindowManager里的layout方法。

    对于WindowManager而言,只要调用了AddView,上述的流程都会走一遍。

    对于一个Window而言,目前大概可以分为几个部分:statusbarview(0,0,320,25),应用的activity(0, 25,320,480)

    http://blog.163.com/fenglang_2006/blog/static/133662318201022104256580/

  • 相关阅读:
    20200824
    Redis
    vs2012快捷键教程
    OpenCV 2.4+ C++ SVM介绍
    隐马尔科夫模型
    hu矩
    手势跟踪
    混合高斯模型GMM
    排序算法
    聚类——混合高斯模型 Gaussian Mixture Model
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3678916.html
Copyright © 2020-2023  润新知