什么是Android视窗?


76

WindowAndroid中的什么是?

我认为Android的最高层称为Activity,即您所看到的屏幕。

有人可以告诉我Android中的Window是什么吗?我们只有一个或多个吗?

Answers:


10

该活动就是您所谓的窗口。

从技术上讲,活动为您创建了窗口。

您可以有许多,但通常不能同步。要询问其他信息,您可以调用一个对话框,或向另一个活动激发一个意图。

有关更多信息,请访问此链接


3
有activity.getWindow(),所以window是Activity的一部分。
Zon

谢谢Knossos,这个信息丰富而简单的答案。
drakogemini2

也感谢Zon的这项活动。
drakogemini2

175

[更新](让我分享Window原始答案后所学到的知识)

一句话,A 是一个具有一个视图层次结构的矩形区域。下图中的彩色矩形是窗口。Window

在此处输入图片说明

如您所见,一个屏幕中可以有多个窗口,并且由WindowManager管理它们。可以通过Hierarchy Viewer或来获得当前屏幕中的窗口列表adb shell dumpsys window

层次结构查看器示例中的窗口列表: 在此处输入图片说明

(下面是原始答案)


我有同样的问题,希望对您有所帮助。

根据Android开发者文档

“每个活动都有一个在其中绘制其用户界面的窗口。”

并且,戴安娜Hackborn,谁是Android框架工程师,给了一些定义在这里。她说,

窗口基本上就像您在桌面上想到的窗口一样。它具有单个Surface,其中呈现了窗口的内容。应用程序与“窗口管理器”交互以创建窗口。窗口管理器为每个窗口创建一个Surface并将其提供给应用程序进行绘制。应用程序可以在Surface中绘制任何内容。窗口管理器只是一个不透明的矩形。

Surface是一个对象,其中包含要合成到屏幕的像素。您在屏幕上看到的每个窗口(对话框,全屏活动,状态栏)都有其自己的曲面,Surface Flinger会以其正确的Z顺序将其渲染到最终显示中。一个表面通常具有一个以上的缓冲区(通常是两个)来进行双缓冲渲染:当表面镶边器使用最后一个缓冲区合成屏幕时,应用程序可以绘制其下一个UI状态,而无需等待应用程序完成画画。

视图是窗口内部的交互式UI元素。窗口具有附加的单个视图层次结构,视图层次结构提供了窗口的所有行为。每当需要重绘窗口时(例如,由于视图自身无效),都会在窗口的Surface中完成此操作。曲面被锁定,这将返回可用于绘制到其中的Canvas。绘制遍历是在层次结构中进行的,将Canvas传递给每个视图以绘制其UI部分。完成后,将对Surface进行解锁和发布,以便将刚绘制的缓冲区交换到前景,然后由Surface Flinger将其合成到屏幕。

另外,我发现一些其他信息罗曼盖伊的演示(你可以看他在旧金山的Android用户群的谈话在这里,并从下载完整的幻灯片在这里

在此处输入图片说明

因此,简而言之:

  • 一个Activity具有窗口(其中它绘制它的用户界面),
  • 一个Window具有单个Surface和与它相连的单一视图的层次结构,
  • 一个Surface包含ViewGroup视图的include 。

1
感谢您的精彩回答和链接。在这个说明中,有人可以告诉我decorView放在哪里吗?
Abhiank

你能告诉我为什么view.getLocationInWindow()返回y坐标,使其也包含状态栏的高度。状态栏应该在另一个窗口中。另外,我检查了我正在谈论的窗口是活动窗口。
Rohan Bhatia

2
根据您活动的主题,系统ui标志等,它可能位于状态栏下方(因此状态栏的高度不包含在窗口中)或可能位于状态栏后面(以便您的活动可以绘制)透明状态栏的后面,在这种情况下,状态栏的高度将包含在窗口中)。特别是,如果您使用自定义状态栏颜色,那么您将在状态栏后面绘制。
j__m


15

Android:窗口,表面,画布和位图 这是关于窗口,表面,画布和位图之间如何进行交互的非常基本且简单的概念概述。


将图表中的上,下曲面与状态和导航栏相对应?
卡洛斯·埃尔南德斯·吉尔(CarlosHernándezGil)2016年

屏幕上的每个窗口都有一个表面。屏幕上可以有多个窗口。是的,导航栏和状态栏具有关联的窗口和连接的表面。上面的图片只是该概念的示例说明。
萨比
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.