美文网首页Android进阶之路Android 开发闲暇时光
Android自定义View基础:ViewRoot、DecorV

Android自定义View基础:ViewRoot、DecorV

作者: Carson带你学安卓 | 来源:发表于2019-05-30 09:01 被阅读327次

    前言

    • 自定义View原理是Android开发者必须了解的基础,在了解自定义View之前,你需要有一定的知识储备。
    • 今天,本文将全面解析关于自定义View中基础:ViewRoot、DecorView & Window,希望你们会喜欢。

    目录

    示意图

    1. ViewRoot

    1.1 简介

    示意图

    1.2 特别注意

    // 在主线程中,Activity对象被创建后:
    // 1. 自动将DecorView添加到Window中 & 创建ViewRootImpll对象
    root = new ViewRootImpl(view.getContent(),display);
    
    // 3. 将ViewRootImpll对象与DecorView建立关联
    root.setView(view,wparams,panelParentView)
    

    2. DecorView

    2.1 定义

    顶层View,即 Android 视图树的根节点;同时也是 FrameLayout 的子类

    2.2 作用

    显示 & 加载布局。View层的事件都先经过DecorView,再传递到View

    2.3 特别说明

    内含1个竖直方向的LinearLayout,分为2部分:

    1. 上 = 标题栏(titlebar)
    2. 下 = 内容栏(content)
    示意图

    Activity中通过 setContentView()所设置的布局文件其实是被加到内容栏之中的,成为其唯一子View = id为content的FrameLayout

    // 在代码中可通过content得到对应加载的布局
    
    // 1. 得到content
    ViewGroup content = (ViewGroup)findViewById(android.R.id.content);
    // 2. 得到设置的View
    ViewGroup rootView = (ViewGroup) content.getChildAt(0);
    

    3. Window

    简介

    4. Activity

    示意图

    5. 之间关系

    ViewRoot、DecorView、Window和Activity的关系非常重要。

    5.1 总结

    示意图

    5.2 之间的关系

    示意图

    6. 总结


    请点赞!因为你们的赞同/鼓励是我写作的最大动力!

    相关文章阅读
    Android事件分发机制详解:史上最全面、最易懂
    Android开发:最全面、最易懂的Android屏幕适配解决方案

    Android开发:史上最全的Android消息推送解决方案
    Android开发:最全面、最易懂的Webview详解
    Android开发:JSON简介及最全面解析方法!
    Android四大组件:Service服务史上最全面解析
    Android四大组件:BroadcastReceiver史上最全面解析


    欢迎关注Carson_Ho的简书!

    不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

    相关文章

      网友评论

        本文标题:Android自定义View基础:ViewRoot、DecorV

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