动态载入Layout 与 论Activity WindowView的关系

Posted gcczhongduan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态载入Layout 与 论Activity WindowView的关系相关的知识,希望对你有一定的参考价值。

1)动态载入Layout的代码是

getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null));

它等同于

setContentView(R.layout.main);

事实上

getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null))  是 setContentView(R.layout.main)

的底层实现


2)论Activity、 Window、View的关系

类似于MVC模式,Activity为控制器。Window为模型,View为真正的视图。

a。一个Activity 构造的时候一定会构造一个Window(PhoneWindow)。而且仅仅有一个

b,这个Window有一个ViewRoot(View /  ViewGroup)

c,ViewRoot通过addView方法来加入View,如TextView,Button

d,这些View的事件监听,是由WindowManagerService来接收信息。而且回调Activity函数,

比方onClickListener。onKeyDown等。

以上是关于动态载入Layout 与 论Activity WindowView的关系的主要内容,如果未能解决你的问题,请参考以下文章

Android中apk动态载入技术研究android插件化及实现

Android之根布局动态载入子布局时边距设置无效问题

使用数据绑定连接两个动态字符串

adjustPan 不能与 FLAG_LAYOUT_NO_LIMITS 一起使用

Android资源文件命名与使用

Andriod开发技巧——Fragment的懒载入