Android ViewRoot、DecorViewWindow浅析

目录

    • 简介
    • 目录
    • 1、VeiwRoot
      • 1.1、简介
      • 1.2、特别注意
    • 2、DecorView
      • 2.1、定义
      • 2.2、作用
      • 2.3、特别说明
    • 3、Window
    • 4、Activity
    • 5、之间关系
      • 5.1、总结
      • 5.2、之间的关系

简介

在这里插入图片描述

  • DecorView为整个Window界面的最顶层View。
  • DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。
  • LinearLayout里有两个FrameLayout子元素。
    • (20)为标题栏显示界面。只有一个TextView显示应用
    • (21)为内容栏显示界面。就是setContentView()方法载入的布局界面,加入其中。

目录

在这里插入图片描述

1、VeiwRoot

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部分:

  • 上 = 标题栏(titlebar)
  • 下 = 内容栏(content)
    在这里插入图片描述

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

注:获取setContentView()设置的View代码如下:

// 在代码中可通过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、之间的关系

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 为控件设置阴影

在Android中设置一个阴影很简单,只需要两步: 设置eleavation值(高度)添加一个背景或者outline (即阴影的形状) 说明: View的大小位置都是通过x,y确定的,而现在有了z轴的…

Android学习指南

目录核心分析内容1、学什么1.1、Android基础 & 常用1.2、Android进阶1.3、与时俱进、热门技术1.4、编程语言:Java与Java虚拟机1.5、计算机基础1.6、总结2、怎么学2.1、学习路径:如何循序渐进、阶段性的学习Android的理论知识?2.2、获取途…

概率论 事件关系 古典概型与几何概型

基本知识点 随机试验:1.不确定性2.可预知性3.可重复性基本事件:包含一个样本点 必然事件:全集 不可能事件:空集 子集2^n-1-1(减去空集与真集) 事件间的关系 1.包含关系 2.和运算AUBAB,A与B至少有一个发生 3.积事件A∩BAB,AB同时发生 4.差事件A-BAB ̅A-AB,A发生但B不发生 5.…

Android代码命名规范

目录目录1、为什么 规范 Android 代码命名?2、Android需要命名的代码(对象)有哪些?3、具体命名规范3.1、包3.2、类3.3、变量3.4、方法3.5、参数名3.6、资源3.6.1、布局文件资源3.6.2、图片资源3.6.3、参数值资源3.6.4、动画资源3.…

Idea中搭建Resin运行环境(Mac)

一、背景 idea中搭建Resin运行环境,可以在idea中通过点击Run按钮直接调试应用。 二、Resin下载地址 下载地址:https://caucho.com/products/resin/download/gpl#download 我下载的是tar.gz的,通过tar -zxvf命令解压到自己mac的任意目录下…

Java牛客专项练习2020.12.10

TreeSet subset()方法: subset(from,true,to,true),返回从from元素到to元素的一个集合,true判断是否包含边境元素 Java与C Java与C都有三个特征: 封装,继承,多态 抽象类与接口 1.抽象类可以有构造方法,但不能new;接口没有构造方法 2.抽象类中可以有普通成员变量int x等,接…

Idea中搭建Wildfly(JBoss)运行环境(Mac)

目录一、简介二、下载Wildfly(JBoss)三、配置Idea四、调试一、简介 首先说一下在linux环境,只需要将war包上传到 wildfly-8.2.0.Final/standalone/deployments 目录,然后到 wildfly-8.2.0.Final/bin 目录下 ./standalone.sh&…

一个简单JavaAgent的实现

一、什么是javaagent javaagent是一个JVM“插件”,一种专门精心制作的.jar文件,它能够利用JVM提供的Instrumentation API。 1.1、概要 Java Agent由三部分组成:代理类、代理类元信息和JVM加载.jar和代理的机制,整体内容如下图所…

Openai的openai新版本调用方式

最近大家有没有发现Openai的openai已经更新到1.6.1了,而且API的调用方式发生了巨大的变化,下面来看看openai新的调用方式吧。 欢迎关注公众号 module ‘openai’ has no attribute ChatCompletion. 提示openai的版本过低。(pip install -U openai) 1. Chat API from openai…

计算机系统基础 计算机系统的基本组成与基本功能

基础知识点 1.1946年第一台通用电子计算机ENIAC诞生 2.冯.诺依曼结构: 组成:输入设备,输出设备,存储器,运算器,控制器 3.现代计算机结构模型: 组成 CPU中央处理器 PC程序计数器 IR指令寄存器 ALU算数逻辑部件 GPRs通用寄存器组 MAR存储器地址寄存器 MDR存储器数据寄存器 知…

Android UI卡顿监控

一、背景 应用的使用流畅度,是衡量用户体验的重要标准之一。Android 由于机型配置和系统的不同,项目复杂App场景丰富,代码多人参与迭代历史较久,代码可能会存在很多UI线程耗时的操作,实际测试时候也会偶尔发现某些业务…

物理 质点运动学

常用公式 重点 1.求轨道方程:消去时间t 2.dr---->位置矢量大小的增量 3.求方向:tanax/y 4.求位置也就是求位移rxiyj即可 习题解析 1.求运动时一定要求出加速度,变速与匀速就是看a 2.求位移时必须看X0是不是为0,如果不为0,求位移与路程时都要减去x0 3. 记住等号两边统一…

使用CLion的时候,对于cmake的使用

问题概述 使用CLion的时候,一个大的项目会有一个总的CMakeLists.txt,这个是控制整个项目的编译环境,但是针对测试的代码会有自己的单独的CMakeLists.txt,这个单独的cmake文件是控制自己的程序所需要的环境即使是编译单独的测试程…

Android NDK之静态/动态注册Native方法

一、简介 关于NDK有两种方法注册:静态注册和动态注册。 静态注册: 就是直接在Java文件里写个native方法 然后再c/c文件中实现这个方法就行了;动态注册: 就是为了不要写很长的方法名,用JNI_OnLoad方法实现预注册&…

概率论 条件概率 全概率 贝叶斯公式

常用知识点 条件概率 1.P(B|A)1表示A发生的情况下B必然发生 A属于B 2.可列可加性 P(BUC|A)P(B|A)P(C|A) 3.P(B|A)的样本空间为A,A与B都发生了 大题解答思路 1.首先设取出一件商品为次品为事件A 2.写B1:甲生产,B2:乙生产 PB1…PB2… P(A|B1)…P(A|B2)… 3.写PAPB1*P(A|B1)……

C语言学习:%d、2d、02d、.2d的区别

%d:为普通的输出。 %2d:按宽度为2输出,右对齐方式输出。若不够两位,左边补空格。 %02d:同样宽度为2,右对齐方式。位数不够,左边补0。 %.2d:从执行效果来看,与%02d一样…

计算机系统基础 数据的表示和存储

数制和编码 1.信息的二进制编码 2.进制转换必须要知道: 1)使用哪一个进制(二,八…) 2)定点数还是浮点数(关于小数点的问题) 3)编码问题----原码,补码,反码,移码 3.进制转换 1)R进制转十进制(按权展开) ----R进制 ----八进制与十六进制 ----R转换为十进制 2)十进制转换为R…

物理 常见力与牛顿三定律

常用知识点 动量 dmvdmvdvm p-mv- f-dp-/dtma- 开普勒第三定律 r1^3__k只与恒星质量有关 T^2 总结 1.电梯匀速就相当于在地面,加速或减速就会有一个a 2.当合外力为0时,物体保持静止或匀速直线运动 3.力是改变物体运动状态的原因 4.重力在地球两极最大,赤道最小,随纬度…

Java命令:jmap — 打印指定进程的共享对象内存映射或堆内存细节

文章目录一、前言二、命令介绍三、使用实例1、jmap -heap [pid]2、jmap -histo[:live] [pid]3、jmap -histo[:live] [pid] |grep "[关键字1]\|[关键字2]"4、jmap -dump:live,formatb,filea.log [pid]四、总结一、前言 jdk安装后会自带一些小工具,jmap命令…