• 理解Window和WindowManager


    1、Window基础                                                  

    Window是一个抽象类,具体实现是PhoneWindow。创建一个Window通过WindowManager实现。Window的具体实现位于WindowManagerService中。

    WindowManager和WindowMangerService的交互是一个IPC过程。

    Android中的所有的视图都是通过Window来呈现的(Activity、Dialog、Toast),它们的视图都是附加在Window上,因此Window是View的直接管理者。

    WindowManger.LayoutParams中的flags表示Window的属性,type参数表示Window的类型。Window有三种类型,分别是应用Window、子Window和系统Window。应用类Window对应着一个Activity。子Window不能单独存在,需要附属在特定的父Window之中,比如Dialog。系统Window是需要声明权限才能创建的Window,比如Toast和系统状态栏。

    Window分层,应用Window层级范围1-99,子Window1000-1999,系统2000-2999。

    Windowmanager提供常用的三个方法是:添加View、更新View和删除View,这三个方法定义在ViewManager中,而WindowManager继承了ViewManager接口。

    2、Window的内部机制                                           

    Window是一个抽象的概念,每一个Window都对应着一个View和一个ViewRootImpl,Window和View通过ViewRootImpl来建立联系,因此Window并不是实际存在的,是以View的形式存在。

    在实际使用中无法直接访问Window,对Window的访问必须通过WIndowManager。

    WindowManager是一个接口,它的真正实现是WindowManagerImpl类。WindowManagerImpl全部交给WindowManagerGlobal来处理。

    Window的添加请求交给WIndowManagerService去处理。

    View动画

  • 相关阅读:
    Linux 如何通过命令查看一个文件的某几行(中间几行或最后几行)
    linux 定义变量 ,添加变量值
    Linux下的vi编辑命令中查找·替换详解
    linux vi 块操作、多窗口
    linux 磁盘 分区、格式化、挂载
    linux 重名名、删除文件操作
    linux vi
    linux 文件查阅 cat、more、less、tail
    linux ls touch、umask、 chattr
    linux 目录配置
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7484519.html
Copyright © 2020-2023  润新知