本文主要内容是讲解一个视?/p>
View
或者一?/p>
ViewGroup
对象是如何添加至
应用程序窗口中的?/p>
下文中提到的窗口可泛指我们能看到的界面,
包括一?/p>
Activity
呈现的界?/p>
(我们可以将其理解为应用程序窗口?/p>
,一?/p>
Dialog
?/p>
Toast
?/p>
Menu
菜单等?/p>
首先对相关类的作用进行简单介绍:
Window
类位?/p>
/frameworks/base/core/java/android/view/Window.java
说明:该类是一个抽象类,提供了绘制窗口的一组通用
API
,可以将其理?/p>
为一个载体,各种
View
在这个载体上显示?/p>
源文件(部分)如下所示:
public abstract class Window {
//
指定
Activity
窗口的风格类?/p>
public static final int FEATURE_NO_TITLE = 1;
public static final int FEATURE_INDETERMINATE_PROGRESS = 5;
//
设置布局文件
public abstract void setContentView(int layoutResID);
public abstract void setContentView(View view);
//
请求指定
Activity
窗口的风格类?/p>
public boolean requestFeature(int featureId) {
final int flag = 1<<featureId;
mFeatures |= flag;
mLocalFeatures
|=
mContainer
!=
null
?
(flag&~mContainer.mFeatures) : flag;
return (mFeatures&flag) != 0;
}
//...
}
PhoneWindow
?
?
?
/frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindo
w.java
说明?/p>
该类继承?/p>
Window
类,?/p>
Window
类的具体实现,即我们可以?/p>
过该类具体去绘制窗口。并且,该类内部包含了一?/p>
DecorView
对象,该