android中view和window是什么关系?

 我来答
hl233211
2011-10-28 · TA获得超过606个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:389万
展开全部
View是看到的每个子控件。
你的Windows的意思应该是整个画面,
而View就是画面里面的每个东西。
比如画面上有一个按钮,一个文本框,那这个按钮和文本框都是View
追问
一个activity对应一个phonewindow
还是多个activity对应一个
追答
一个activity对应一个phonewindow

在一个时间点 只有一个activity在最上层
yuanquanfeng
2011-10-28 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:132万
展开全部
没有任何关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卖拖鞋的小男孩
2015-08-13 · TA获得超过2246个赞
知道小有建树答主
回答量:1801
采纳率:37%
帮助的人:507万
展开全部
  每一个Activity都有一个默认的Window,一般来讲,这个Window都是全屏的,当然也有例外,比如Dialog的Window就是非全屏的。Activity也可以利用默认Window以外的其它的Window,比如弹出一个Dialog对话框。6 i8 J' I' b+ v. F% r
Window里可见的内容,就是一层一层的View。Window里的View是通过setContentView这个接口set进去的,这个ContentView就是Window里处于最根部的View。
  对于屏幕显示而言,整个是Activity 其实确切的说是window,为什么这样说呢?
在Activityattach 函数里.有这样一句 mWindow = PolicyManager.makeNewWindow(this);
这句是把Activiyt window关联起来了.真正关联的是PhoneWindow.
这个window里显示的东西是view(activity是逻辑上的东西,增加了生命周期管理等. 里面具体的东西也是view。而且启动activity的实现也是往window里加view),往window里加view,是通过调用WindowManager(WindowManagerImpl).addView()来实现的。
为什么可以这样说呢?
看public void setContentView(int layoutResID) {
getWindow().setContentView(layoutResID);
}

在addView里,会为每个view创建一个viewRoot(这是逻辑上的东西,用来负责view的事件处理和逻辑处理,并和WindowsManagerService建立联系),而在WindowManagerImpl里,会维护viewRoot的数组。
  最终会调用ViewRoot.setView(),在setView里会显示该view等。在setView的实现里,会调用Session.add()来addWindow,通过这个方法,会将ViewRoot和WindowManagerService联系起来(比如说分发事件等),并且这个方法里会调用PhoneWindowManager.prepareAddWindowLw()。
  参考资料:http://blog.163.com/xueli_007/blog/static/715336072011522103124253/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式