Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutInflater像剪刀,Xml配置像窗花图纸。
- 在Activity中调用attach,创建了一个Window
- 创建的window是其子类PhoneWindow,在attach中创建PhoneWindow
- 在Activity中调用setContentView(R.layout.xxx)
- 其中实际上是调用的getWindow().setContentView()
- 调用PhoneWindow中的setContentView方法
- 创建ParentView: 作为ViewGroup的子类,实际是创建的DecorView(作为FramLayout的子类)
- 将指定的R.layout.xxx进行填充 通过布局填充器进行填充【其中的parent指的就是DecorView】
- 调用到ViewGroup
- 调用ViewGroup的removeAllView(),先将所有的view移除掉
- 添加新的view:addView()
fragment 特点
- Fragment可以作为Activity界面的一部分组成出现;
- 可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用;
- 在Activity运行过程中,可以添加、移除或者替换Fragment;
- Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响。