什么是Android窗口?
Android中的什么是Android窗口?,android,android-activity,android-window,Android,Android Activity,Android Window,Android中的窗口是什么 我认为安卓系统的最高级别叫做活动,这就是你看到的屏幕 有人能告诉我Android中的窗口是什么吗?我们是否只有一个或多个窗口。该活动就是您所说的窗口 从技术上讲,该活动为您创建了一个窗口 你可以有很多,但通常不是同步的。要询问其他信息,您可以调用对话框,或激发另一个活动的意图 更多信息。[UPDATE](在原始答案之后,让我分享一下我对窗口的了解) 在一句话中,窗口是一个具有一个视图层次结构的矩形区域。下图中的彩色矩形是窗口 如您所见,在一个屏幕中可以有多个窗口,
窗口是什么
我认为安卓系统的最高级别叫做活动
,这就是你看到的屏幕
有人能告诉我Android中的窗口是什么吗?我们是否只有一个或多个窗口。该活动就是您所说的窗口
从技术上讲,该活动为您创建了一个窗口
你可以有很多,但通常不是同步的。要询问其他信息,您可以调用对话框,或激发另一个活动的意图
更多信息。[UPDATE](在原始答案之后,让我分享一下我对窗口的了解)
在一句话中,窗口是一个具有一个视图层次结构的矩形区域。下图中的彩色矩形是窗口
如您所见,在一个屏幕中可以有多个窗口,并对其进行管理。当前屏幕中的窗口列表可通过或adb shell dumpsys窗口
获取
层次结构查看器中的窗口列表示例:
(以下是原始答案)
我也有同样的问题,我希望这能帮助你们
根据,
“每个活动都有一个窗口,可以在其中绘制其用户界面。”
作为Android框架工程师,他给出了一些定义。她说,
窗口基本上就像你想象的桌面上的窗口一样。它有一个单独的曲面,其中渲染窗口的内容。应用程序与窗口管理器交互以创建窗口;窗口管理器为每个窗口创建一个曲面,并将其提供给绘图应用程序。应用程序可以在表面上绘制任何它想要的东西;对于窗口管理器来说,它只是一个不透明的矩形
曲面是一个对象,包含合成到屏幕上的像素。您在屏幕上看到的每个窗口(对话框、全屏活动、状态栏)都有自己的绘制到的曲面,surface Flinger以正确的Z顺序将其渲染到最终显示。一个曲面通常有多个缓冲区(通常是两个)来进行双缓冲渲染:当surface flinger使用最后一个缓冲区合成屏幕时,应用程序可以绘制其下一个UI状态,而无需等待应用程序完成绘制
视图是窗口内的交互式UI元素一个窗口附加了一个视图层次,它提供了窗口的所有行为每当需要重新绘制窗口时(例如因为视图本身已失效),都会在窗口的曲面中进行此操作。曲面已锁定,这将返回可用于绘制到其中的画布。绘制遍历在层次结构中完成,为每个视图向下传递画布以绘制其UI部分。完成后,曲面将解锁并发布,以便将刚绘制的缓冲区交换到前景,然后由曲面Flinger合成到屏幕上
另外,我从演示文稿中发现了一些其他信息(你可以在旧金山Android用户组观看他的演讲,从下载完整的幻灯片)
因此,简而言之:
活动
有一个窗口(在其中绘制其用户界面)
窗口
有一个曲面
和一个附加的视图层次
- 一个包含视图的
曲面
包含视图组
下面是一个非常基本和简单的概念性概述,介绍了窗口、曲面、画布和位图之间如何进行交互。我想简单地说:
Application --->
Activity --->
Window Manager --->
Window --->
Surface --->
Canvas --->
View Root --->
View Group --->
View --->
Bitmap/Open GL panel --->
Current Surface Buffer --->
Surface Flinger --->
Screen
将图表中的上下表面与状态和导航栏相对应?屏幕上的每个窗口都有一个表面。屏幕上可以有多个窗口。是的,导航栏和状态栏具有关联的窗口和附着的曲面。上面的图片只是这个概念的一个示例说明。感谢亲爱的Finwe提供了更好的格式。坦率地说,我对stackoverflow一无所知。感谢您的精彩回答和链接。有人能告诉我decorView在这个解释中的位置吗?你能告诉我为什么view.getLocationInWindow()返回y坐标,这样它也包含状态栏高度。状态栏应该位于另一个窗口中。此外,我已经检查了我所说的窗口是否是活动窗口。根据活动的主题、系统ui标志等,它可能位于状态栏下方(因此状态栏的高度不包括在窗口中),也可能位于状态栏后面(这样,您的活动可以在透明状态栏后面绘制,在这种情况下,状态栏的高度包含在窗口中)。特别是,如果您使用自定义状态栏颜色,则您可以在状态栏后面绘制。有activity.getWindow(),所以窗口是活动的一部分。感谢Knossos提供了这一内容丰富且简单的答案。也感谢Zon提供此活动属性。