DecorView

作者: 小菜_charry | 来源:发表于2016-07-16 15:32 被阅读236次

    1. DecorView

    DecorView一般是当前界面的底层容器(即setContentView所设置的父容器)

    • 通过activity.getWindow.getDecorView()可以获得DecorView。
    • getWindow().getDecorView().findViewById(android.R.id.content)也可以获取DecorView
    • 通过getWindow().getDecorView().findViewById(android.R.id.content).getChildAt(0)即可获得Activity所设置的View

    DecorView是PhoneWindow的内部类,继承FrameLayout

        public class PhoneWindow extends Window implements MenuBuilder.Callback {
            ...
            private final class DecorView extends FrameLayout implements RootViewSurfaceTaker {...}
        }
    

    2. DecorView与Activity的关系

    我们知道Activity中PhoneWindow对象会创建一个DecorView,窗口顶层视图,然后通过LayoutInflater将xml内容布局解析成View,添加到DecorView中的顶层视图中,其id为android.R.id.content 。总的来说,对于Activity来说,顶层 View就是DecorView。

    3. DecorView的应用

    将view插入到activity的根view中,并且显示是在最顶上

    View view = View.inflate(activity, R.layout.loadingview, null);
    FrameLayout decorView = (FrameLayout) activity.getWindow().getDecorView();
    decorView.addView(view);
    

    可以用来制作EmptyLayout、LoadingView等,用来插入到某个activity中,显示在最顶上.

    相关文章

      网友评论

          本文标题:DecorView

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