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等。