【发布时间】:2011-12-08 05:36:34
【问题描述】:
===========================
更新:经过几天的谷歌搜索和experiments,我找到了大部分愚蠢问题的答案。查看我提交的答案。
=========
Android Window 的职责是什么?
这里有几个问题:
- 它是否负责收集和分派输入?
- 视图和窗口是什么关系?和DFB中的surface和window的关系一样吗?
- 活动和窗口之间有什么关系?每个 Activity 都会有一个窗口吗?
- 是否可以从应用程序创建窗口?什么时候有必要?
- Android 是否支持多窗口?
编辑:添加更多问题:
Window、View、Canvas、Surface等各个类的职责是什么?它们之间是如何协作的?
一个Activity通常有多少个窗口?
3. 一个Activity中的所有视图会附加到Window吗? 附加是什么意思?
每个窗口都有表面?每个 Canvas 都有表面?
View负责focus/keyEvent/manager,而Cavus只负责“绘图”操作。
WindowManager 负责窗口堆叠?这与 SurfaceFlinger 有什么关系?
View 不拥有 Surface ,视图包含的 Window 拥有?
View 使用通过调用 surface.lockCanvas() 获得的画布自行绘制。
什么时候会调用 onDraw(Canvas)?如何以及由谁传递画布参数?
Canvas 有大小吗? Window 的表面会一直全屏吗?
再次编辑:
看完 Romain Guy http://www.youtube.com/watch?v=duefsFTJXzc&feature=feedwll&list=WL 提供的精彩演示后,解决了几个问题并添加了几个:)
- 每个 Activity 是否都有一个 ViewRoot 和一个 Window?
- 是否需要显式创建窗口?以及窗口的表面是否总是全屏?
- 状态栏会在另一个窗口中吗?
- 表面的尺寸是多少?会一直全屏吗?
【问题讨论】:
标签: android frameworks view window directfb