Android WMS
文章平均质量分 89
该专栏主要对Android WMS模块基础功能和相关源码分析。源码部分主要以Android 12 为主。
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
c小旭
Android Framework车载智能座舱开发工程师
展开
-
Android WMS—— Surace管理 (二十)
WMS 负责创建 Surface 以及对 Surface 的摆放工作,之后将 Surface 提交给SurfaceFlinger 进行合并。在 App 层也创建了一个 Surface 对象,但是那个是空对象,用于 WMS 的填充。原创 2023-11-22 16:33:42 · 374 阅读 · 0 评论 -
Android WMS——客户端输入事件处理(十九)
前面的文章我们介绍了 WMS 中的输入服务的启动及事件处理,这一篇我们来看一下客户端对输入事件的处理。原创 2023-11-22 13:42:15 · 287 阅读 · 0 评论 -
Android WMS——服务端输入事件处理(十八)
源码位置:/frameworks/native/services/inputflinger/reader/EventHub.cpp。原创 2023-11-21 16:03:44 · 322 阅读 · 0 评论 -
Android WMS——输入系统管理(十七)
Android 系统服务,分为 Java 层和 Native 层两部分,Java 层负责与 WMS 通信,而 Native 层则是 InputReader 和 InputDispatcher 两个输入系统关键组件的运行容器;1)创建 IMS 对象创建 NativeInputManager 对象,此对象将是 Native 层组件与 Java 层 IMS 进行通信的桥梁。创建 Native 层的 InputManager,创建 InputDispatcher、InputReader、EventHub。原创 2023-11-20 11:30:29 · 185 阅读 · 0 评论 -
Android WMS——窗口动画启动(十七)
上一篇文章主要介绍了触发添加窗口动画和加载动画资源,接下来开始进一步触发,对动画的参数进行了进一步设置。原创 2023-11-03 17:51:39 · 135 阅读 · 0 评论 -
Android WMS——窗口动画触发及加载(十六)
Android 窗口动画是 Android 系统动画的一种,当一个非 Activity 主窗口,非壁纸窗口添加或者移除的时候会触发 Android 窗口动画的流程,例如 Toast 的弹出或者移除的过程中就会触发窗口动画。我把窗口动画的执行流程大概分为以下几步:触发添加窗口动画加载对应的动画资源创建 leash,同时把执行动画的窗口容器 reparent 到 leash 上开始循环执行窗口动画动画结束,把执行动画的窗口重新 reparent 到该容器原来的父节点上。原创 2023-11-02 16:18:42 · 303 阅读 · 0 评论 -
Android WMS——窗口动画基础(十五)
下面是一些与动画管理相关的概念和功能:窗口动画(Window Animation):窗口动画是指在窗口打开、关闭、切换等状态转换过程中应用的动画效果。WMS 会根据窗口的状态和属性,在发生状态变化时执行相应的动画。例如,当窗口从最小化到恢复时,可以应用淡入或滑动的动画效果。转场动画(Transition Animation):转场动画是指在不同的屏幕间进行切换时应用的动画效果。例如,当从一个应用切换到另一个应用时,可以应用淡入淡出、滑动等动画效果,以平滑地切换界面。原创 2023-11-02 15:53:17 · 506 阅读 · 0 评论 -
Android WMS——WMS窗口更新移除(十四)
前面通过几篇的文章详细的介绍了 Window 窗口的添加过程,这里我们简单看一下,AMS 如何实现 Window 窗口的更新和移除流程。原创 2023-11-01 18:05:04 · 258 阅读 · 0 评论 -
Android WMS——WindowState介绍(十三)
在窗口管理系统(Window Manager Service,WMS)中,WindowState 是一个核心概念,用于表示应用程序窗口的状态和属性。每个应用程序窗口在 WMS 中都对应一个 WindowState 对象。WindowState 包含了多个属性和方法来描述窗口的行为和状态,其中一些重要的属性和方法包括:Token(令牌):每个 WindowState 都有一个唯一的令牌,用于标识窗口的身份。令牌在 WindowToken 对象中维护,并且用于关联窗口与其所属应用程序的其他组件。原创 2023-11-01 15:29:41 · 461 阅读 · 0 评论 -
Android WMS——WindowToken介绍(十二)
在 WMS(Window Manager Service)中,WindowToken 是一个重要的类,用于表示窗口的令牌(Token)信息。WindowToken 主要负责管理窗口的一些属性和行为,包括窗口类型、窗口拥有者(Owner)以及处理窗口可见性等。DisplayContent.addWindowToken 和 WindowManagerService.addWindowToken 都是用于添加窗口令牌的方法,但它们的作用范围不同。原创 2023-10-31 18:56:33 · 338 阅读 · 0 评论 -
Android WMS——DisplayContent介绍(十一)
在 Android 的 WMS(Window Manager Service)中,DisplayContent 类扮演着非常重要的角色。它的主要作用是管理一个物理显示设备(如屏幕)上所有窗口的信息。具体来说,DisplayContent 封装了一个 Display 对象,它代表一个物理显示设备的抽象。DisplayContent 维护了一个窗口列表(WindowList),内部存储了该显示设备上所有窗口的状态信息,并根据窗口的优先级进行堆叠和排序。原创 2023-10-31 15:37:42 · 372 阅读 · 0 评论 -
Android WMS——WMS窗口添加(十)
Android 的 WMS(Window Manager Service)是一个关键组件,负责管理窗口的创建、显示、布局和交互等。Window 的操作有两大部分,一部分是 WindowManager 来处理,一部分是 WMS 来处理,如下图所示:WindowManager 中,通过 WindowManagerGlobal 创建 ViewRootImpl ,也就是 View 的根。原创 2023-10-31 14:13:51 · 334 阅读 · 0 评论 -
Android WMS——WMS类基础(九)
1、WMS重要成员源码位置……………………mPolicy类型为 WindowManagerPolicy。窗口管理策略的接口类,用来定义一个窗口策略所要遵循的通用规范,并提供了 WindowManager 所有的特定 UI 行为。他的具体实现类为 PhoneWindowManager,这个实现类在 WMS 创建时被创建。WMP 允许定制窗口层级和特殊窗口类型以及关键字的调度和布局。mSessions数据类型为 ArraySet,元素类型为 Session。原创 2023-10-30 14:54:49 · 289 阅读 · 0 评论 -
Android WMS——WM窗口管理(八)
我们在 ViewRootImpl 分析中,已经对 WindowManager 的功能有一个大致了解,这里再来详细看一下 WindowManager 是如何管理 Window 的。原创 2023-10-28 11:46:51 · 330 阅读 · 0 评论 -
Android WMS——操作View(七)
最开始学习 View 的时候最先分析的是它的布局(LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout),然后是它的三大方法(measure、layout、draw)。源码位置:/frameworks/base/core/java/android/view/View.javaActivity:应用程序组件,提供一个屏幕,用户可以用来交互来完成某项任务。View:作为所有图形的基类。原创 2023-10-28 11:45:43 · 189 阅读 · 0 评论 -
Android WMS——ViewRootImpl分析(六)
Actiivty 中会创建一个 Window 对象。setContentView 方法中的 View 最终也会被添加到 Window 对象中的 DecorView 中,也就是说一个 Window 中对应着一个 View。这个 View 是被 ViewRootImpl 操作的。WindowManager 就是入口。原创 2023-10-28 11:45:24 · 341 阅读 · 0 评论 -
Android WMS——Dialog和Toast窗口创建(五)
每一个 Window 都对应着一个 View 和一个 ViewRootImpl。Window 表示一个窗口的概念,也是一个抽象的概念,它并不是实际存在的,它是以 View 的方式存在的。WindowManager 是我们访问 Window 的入口,Window 的具体实现位于 WindowManagerService 中。WindowManager 和 WindowManagerService 交互是一个 IPC 的过程,最终的 IPC 是在 RootViewImpl 中完成的。原创 2023-10-26 20:27:55 · 346 阅读 · 2 评论 -
Android WMS——Activity窗口创建(四)
我们都知道 View 不能单独存在,必须依附在 Window 上面,因此有视图的地方就有 Window。这些视图包括 :Activity,Dialog,Toast,PopupWindow 等等。原创 2023-10-26 16:29:38 · 181 阅读 · 0 评论 -
Android WMS——Window窗口(三)
第一个子窗口应用窗口的子窗口,PopupWindow的默认类型用来显示Media的窗口TYPE_APPLICATION_PANEL的子窗口OptionMenu、ContextMenu的默认类型TYPE_APPLICATION_MEDIA的重影窗口,显示在TYPE_APPLICATION_MEDIA和应用窗口之间。原创 2023-10-26 11:17:51 · 239 阅读 · 0 评论 -
Android WMS——系统服务(二)
WMS 作为系统服务,也是在 SystemServer 内部启动的。Android 系统在启动的时候,会启动两个重要的进程,一个是 Zygote 进程,另一个是由 Zygote 进程 fork 出来的 system_server 进程,SystemServer 会启动我们在系统中所需要的一系列 Service。原创 2023-10-25 17:57:07 · 317 阅读 · 0 评论 -
Android WMS——概述(一)
窗口动画是指在切换窗口、改变窗口大小或位置等场景下,窗口的平滑过渡效果。这些动画能够为用户带来视觉上的流畅感,增加用户的交互乐趣。Android 系统提供了一些内置的窗口动画效果,并支持开发者自定义窗口动画。开发者可以通过使用属性动画系统,来自定义窗口动画效果。通过设置窗口的属性值,如位置、大小、透明度等,并根据自己的需求创建、配置和管理属性动画对象,从而实现各种独特的窗口动画效果。总的来说,Android 的 WMS 通过结合属性动画系统,支持窗口动画效果的展示。原创 2023-10-25 15:29:10 · 515 阅读 · 2 评论