什么是Android中的Window
?
我认为Android中的最高级别称为Activity
,这是您看到的屏幕。
有人可以告诉我Android中的Window是什么吗?我们只有一个或多个。
答案 0 :(得分:152)
[更新] (让我分享原帖答案后我对Window
所学到的知识)
在一句话中, A Window
是一个矩形区域,其中包含一个视图层次结构< / EM> 即可。下图中的彩色矩形是窗口。
如您所见,一个屏幕中可以有多个窗口,WindowManager可以管理它们。可以通过Hierarchy Viewer或adb shell dumpsys window
获取当前屏幕中的窗口列表。
Hierarchy Viewer示例中的窗口列表:
(以下是原始答案)
我有同样的问题,我希望这可以帮助你们。
根据Android Developer Documentation,
“每个活动都有一个窗口,可以在其中绘制用户界面。”
和Dianne Hackborn,谁是Android框架工程师,给出了一些定义here。她说,
窗口 基本上就像您想到桌面上的窗口一样。它 有一个Surface ,其中呈现窗口的内容。应用程序与Window Manager交互以创建窗口;窗口管理器为每个窗口创建一个Surface,并将其提供给应用程序进行绘制。应用程序可以在Surface中绘制任何想要的内容;到窗口管理器它只是一个不透明的矩形。
曲面 是一个 对象,其中包含正在合成屏幕的像素 。您在屏幕上看到的每个窗口(对话框,全屏活动,状态栏)都有自己的绘图表面,而Surface Flinger会以正确的Z顺序将这些窗口渲染到最终显示。表面通常具有多个缓冲区(通常为两个)以进行双缓冲渲染:应用程序可以绘制其下一个UI状态,而表面抛光器使用最后一个缓冲区合成屏幕,而无需等待应用程序完成图。
视图是窗口内的交互式UI元素。 一个窗口附加了一个视图层次结构 ,它提供了窗口的所有行为。 每当需要重新绘制窗口 时(例如因为视图已使自身无效),会在窗口的Surface 中完成。 Surface已锁定,返回可用于绘制到其中的Canvas。在层次结构中完成绘制遍历,为每个视图向下移动Canvas以绘制其UI部分。完成后,Surface将被解锁并发布,以便刚刚绘制的缓冲区交换到前景,然后由Surface Flinger合成到屏幕上。
另外,我在Romain Guy的演示文稿中找到了其他一些信息(您可以在here的旧金山Android用户组中观看他的演讲,并从here下载完整幻灯片)< / p>
简而言之:
Activity
有一个窗口(在其中绘制用户界面),Window
只有一个Surface
和一个视图层次结构,Surface
包含ViewGroup
,其中包含视图。答案 1 :(得分:12)
我想简单地说:
Application --->
Activity --->
Window Manager --->
Window --->
Surface --->
Canvas --->
View Root --->
View Group --->
View --->
Bitmap/Open GL panel --->
Current Surface Buffer --->
Surface Flinger --->
Screen
答案 2 :(得分:11)
答案 3 :(得分:8)
活动就是你所谓的窗口。
从技术上讲,活动会为您创建窗口。
你可以有很多,但通常不同步。要询问其他信息,您可以调用Dialog,或者将Intent激发到另一个Activity。
了解更多信息visit this link。