android视频教程

android视频教程

5 (13人评价)
  • 课时:(26)

  • 学员:(409)

  • 浏览:(15171)

  • 加入课程

android视频教程10的笔记

相关课时: 笔记详情:

分享原因:

1.不知道activity中setContentView显示界面怎么实现的。

2.界面空间树概念

3.模式的使用

4.是面试题

 

Activity是android的显示视图吗?

Activity、Window、View的关系是什么?

LayoutInflater是做什么的?

layoutInflater.inflate()做什么的?

 

Activity启动过程初始Window对象及使用WindowManager

Activity的setContentView过程中Window加载View

 

Activity:

setContentView()for adding view

attach()for starting

 

PolicyManager 实现Ipolicy接口

 

Policy

phoneWindow makeNewWindow()

 

PhoneWindow----》Window setContentView()

setContentView()

PhoneWindow

addContentView()

 

ViewGroup---》View

addView()

 

layoutInflater  把资源文件构造实例化

from()

 

代码跟踪:

Activity.java

attach()中

mWindow = PolicyManager.makeNewWindow(this); 返回Window类型,返回PhoneWindow,Window是个抽象类。

 

PolicyManager.java

makeNewWindow()调用Ipolicy接口的函数。Ipolicy是Policy来实现的。

 

Policy.java

makeNewWindow()new一个PhoneWindow返回。

 

PhoneWindow.java

Window是个抽象类,通过也是唯一的实例化类PhoneWindow来实例化。

构造函数中如何实例化的:

LayoutInflater.from()返回一个实例

 

Activity.java

setContentView()中getWindow()先得到当前窗体,setContentView()

 

PhoneWindow.java

setContentView()中ViewGroup的对象addView()

 

1、一个Activity构造的时候一定会构造一个Window(PhoneWindow),并且只有一个。

2、这个窗户有一个ViewRoot(View,ViewGroup).Layout,Layout.Inflater

3、addView()。

4、WindowManagerService接收的西欧阿西,并且回调Activity函数,如onKeyDown()

Activity是控制单元,Window是承载模型,View才是真正的视图

 

写一个例子,用window的setContentView,参数不指定R资源文件,而直接用把资源文件加载成View对象(实例化成view),通过inflater实现。

rootView,有视图树

 

0 0

你感兴趣的课程

8万+浏览/ 916学员/ 4.5评分
免费
6万+浏览/ 177学员/ 5评分
免费
6万+浏览/ 972学员/ 4.8评分
免费