Window和WindowManager的关系

作者: 奔跑吧李博 | 来源:发表于2018-12-28 15:37 被阅读14次

在应用中,任何要显示的界面都要依附在Window上,比如Activity、Dialog、Toast都是在window中显示的。Window 是一个抽象类,表示一个窗口,它的具体实现类是 PhoneWindow。实现位于WindowManagerService 中,WindowManagerService位于Android系统架构的Framework层。

Window 分类

Window 有三种类型,分别是应用 Window、子 Window 和系统 Window。应用类 Window 对应一个 Acitivity,子 Window 不能单独存在,需要依附在特定的父 Window 中,比如常见的一些 Dialog 就是一个子 Window。系统 Window是需要声明权限才能创建的 Window,比如 Toast 和系统状态栏都是系统 Window。

Window添加子view

对 Window 的操作是通过 WindowManager 来完成的,WindowManager 是一个接口,它继承自只有三个方法的 ViewManager 接口,包括添加、删除、更新view:

public interface ViewManager{
    public void addView(View view, ViewGroup.LayoutParams params);
    public void updateViewLayout(View view, ViewGroup.LayoutParams params);
    public void removeView(View view);
}

setContentView()在下层调用的就是windowManager的addview()方法。Window内部有叫decorview的根view,将setContentview()传入的view添加到decorvew中,就将view绑定到window中了。

相关文章

网友评论

    本文标题:Window和WindowManager的关系

    本文链接:https://www.haomeiwen.com/subject/uwbpzftx.html