`

Android的窗口机制

阅读更多

Android的窗口机制

将用户的操作变成交互事件传递到交互界面的机制。

Android的窗口机制是为了将用户与界面的交互传递到对应的控件,之所以称为控件机制是因为,采取了基于窗口Window注册的实现模式。

    窗口机制的核心是窗口管理服务,实现类是WindowManagerService,运行在系统核心进程中的一个独立线程中。负责管理交互界面的控件树,并将用户的操作转换成交互事件传递到当前的交互界面。

    每棵控件树都有一个ViewParent接口对象。接口的实现类是ViewRoot,在应用的一端,所有的ViewRoot对象由WindowManager管理,开发者通过调用Context.getSystemService传入Context.WINDOW_SERVICE获得该对象。

     通过WindowManagerAndroid会将各个ViewRoot对象与窗口管理服务建立双向的通信信道,使得ViewRoot和窗口管理服务可以彼此远程调用。每个ViewRoot对应的控件树,都会有其控制的矩形区域,成为该对象的“窗口”。

 

     ViewRoot通过WindowManager向窗口管理服务发送注册请求。窗口管理服务为该ViewRoot建立一个双向的通信信道。当用户通过硬件设备与应用进行交互时,系统底层的驱动会将操作传递到窗口管理服务,窗口管理服务会解析操作,将其传唤为交互事件。窗口管理服务尝试定位当前与用户交互的窗口,然后将请求发送给窗口的ViewRoot对象,ViewRoot对象收到交互事件后,沿着控件树向下进行传递。

 

    窗口管理服务为每一个可视的窗口分配一个窗口层次Z-order。当用户与设备产生交互时,窗口管理服务会寻找与该窗口区域关联的窗口,然后将事件传递给层次最高的窗口。在窗口管理服务中,越晚添加的窗口的窗口层次越高,更易接受交互消息。

 

    除此之外,一些系统交互模块如状态栏、通知栏具有更高的基础窗口层次,可以优先普通应用的窗口来处理与用户的交互。

分享到:
评论

相关推荐

    Android核心机制深入分析

    系统服务也是Android核心机制的重要组成部分,例如窗口管理器负责屏幕布局和交互,包管理器处理应用的安装和更新,电源管理服务优化设备的能源使用,位置服务提供定位功能,以及网络服务管理数据连接等。 深入理解...

    Android窗口机制

    DecorView通过PhoneWindow与WindowManagerService通信原理图 每个Activity都有一个Window对象,这个对象是PhoneWindow类型...Window并不是真实存在的,它表示一种抽象的功能集合,View才是Android中的视图呈现形式,绘

    Android主要机制深入分析.pdf

    深入分析Android的机制,对于理解其运行原理和进行系统开发尤为重要。 首先,Android的设计哲学和方法论是我们研究的出发点。设计意图指的是系统设计者最初对于系统的构想和目标,而分析方法论则是指使用何种方法和...

    android 窗口化app 位移

    如标题所述,“Android窗口化App位移强制移动window窗口”,这可以通过在`PhoneWindowManager`中强制指定window的显示区域来实现。例如: ```java // 在PhoneWindowManager中指定新的显示区域 w.mFrame.left = newX...

    Android窗口小工具

    通过以上步骤,你可以创建一个基本的Android窗口小工具。随着对AppWidgetAPI的深入理解和实践,你可以构建出更复杂、功能更丰富的窗口小工具,为用户提供更佳的使用体验。在实际开发中,还要考虑性能优化、兼容性...

    android悬浮窗口可拖动

    在Android系统中,"android悬浮窗口可拖动"是一个常见的需求,主要用于实现类似桌面小部件、聊天头部...在处理这些问题时,需要对Android的系统机制有深入的理解,同时也需要具备良好的编程实践和用户体验设计能力。

    android 360浮动窗口

    总结起来,实现“360浮动窗口”涉及以下几个关键点:理解Android窗口管理,创建自定义ViewGroup,编写悬浮服务,处理触摸事件和手势识别,以及权限管理和屏幕旋转适配。通过这些知识点的综合运用,我们可以创建出...

    Android 提高篇 机制 分析

    #### 十三、AndroidGWES之Android窗口管理 对GWES中的窗口管理进行更详细的解析,介绍其实现细节。 #### 十四、AndroidGWES之输入系统 分析GWES中的输入系统,包括输入事件的捕获、分发机制等。 #### 十五、...

    android锁屏机制

    在Android系统中,锁屏机制是用户隐私保护和设备安全的重要组成部分。本文将深入探讨Android锁屏机制,解析其中涉及的主要类与组件,以及它们如何协同工作以实现锁屏功能。 首先,Android锁屏机制主要由以下几个...

    android 浮动窗口 小窗口

    这个过程比较复杂,需要对Android的触摸事件机制有深入理解。 总结来说,创建Android浮动窗口主要涉及以下几个步骤: 1. 添加`SYSTEM_ALERT_WINDOW`权限。 2. 创建一个服务`FloatWindowService`。 3. 在服务中加载...

    Android事件分发机制

    在Android系统中,事件分发机制是用户与应用程序交互的核心环节。它决定了用户在屏幕上点击、滑动等操作如何被正确地处理和响应。本文将深入探讨Android事件分发机制,帮助开发者理解这一关键概念。 首先,我们从...

    android实例--窗口抖动demo

    首先,我们需要理解Android窗口管理的基本概念。 Android窗口(Window)是应用程序与用户交互的容器,它承载了Activity、Dialog等UI组件。窗口抖动涉及到Android的动画系统,包括属性动画(Property Animation)和...

    【Android进阶】(7)系统窗口的调用

    在Android系统中,窗口(Window)是应用程序与用户交互的基础元素。...深入理解这些概念和机制对于开发高质量的Android应用至关重要。通过阅读源码和实践,我们可以更全面地掌握Android系统窗口的精髓。

    Android主要机制深入分析

    ### Android主要机制深入分析 #### 一、设计方法论探讨之设计意图 在探究Android复杂的内部运作机制之前,我们首先要明确研究的方向与目的。对于一个跨平台开发者来说,理解Android的核心在于把握其设计理念与实现...

    android 窗口发短信 完整版 原创

    本教程将详细讲解如何实现这样一个完整的、适用于真机环境的Android窗口发短信功能。 首先,我们需要了解Android的权限管理。在AndroidManifest.xml文件中,必须添加以下权限来允许应用发送短信: ```xml ...

    android 弹出窗口

    总的来说,理解和掌握Android中的弹出窗口机制对于开发交互式应用至关重要。通过合理运用各种类型的Dialog和悬浮窗,可以提高用户体验,使应用更具吸引力。同时,深入研究`dialog_demo`项目代码可以帮助开发者更直观...

    windowDecorView关系图

    通过分析`windowDecorView关系图`,开发者可以更深入地理解Android窗口机制,从而更好地定制`Activity`的界面和行为。了解这些基础知识对于优化用户体验、处理窗口事件和自定义窗口装饰至关重要。

    2021-辅助类库-Android 视频浮动窗口源码.zip

    Android的`AsyncTask`或者`Handler`/`Looper`机制可以用来在后台处理视频解码和播放。 7. **悬浮窗的位置与大小调整**: 源码可能会包含处理用户触摸事件的方法,使得用户可以通过拖动来改变悬浮窗的位置,通过...

    Android 核心分析(13) -----Android GWES之Android窗口管理.doc

    Android窗口管理遵循C/S(客户端/服务器)模式。Window在Android中代表顶级窗口,而DecorView作为Window的顶级视图,是Activity的主要视图组件,它会自动附加到Activity的主窗口上。当Activity创建其主窗口并将其...

Global site tag (gtag.js) - Google Analytics