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,一经查实,立即删除!

相关文章

Java集合Stream类

Java集合Stream类 ----按条件对集合进行过滤filter public class Test {public static void main(String[] args) {List<String>allnew ArrayList<>();all.add("ghjt");all.add("ghjiiii");Stream<String>streamall.stream();List<S…

使用openssl完成aes-ecb模式的数据加解密,输入和输出都是字符串类型

代码 #include <cstring> #include <memory>#include <openssl/aes.h> #include <openssl/md5.h>namespace hsm{namespace mgmt{void get_md5_digest(const std::string &data,uint8_t result[16]){MD5_CTX md5_ctx{};MD5_Init(&md5_ctx);MD5…

Java Stream MapReduce大数据开发模型

实现一个购买商品后,对数据进行处理统计的功能. 将购买的商品信息保存在Orders类中 public class Orders {private String name;private double price;private int amount;public Orders(String name, double price, int amount) {this.name name;this.price price;this.am…

随机函数的生成

函数代码 #include <string>bool GenerateRandom(std::string *str,unsigned int len) {srand(time(NULL));for(unsigned int i0;i<len;i){switch(rand()%3){case 1:(*str).push_back(Arand()%26);break;case 2:(*str).push_back(arand()%26);break;default:(*str).p…

Android 为控件设置阴影

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

Android在代码中设置drawableLeft(Right/Top/Bottom)

根据业务的需要&#xff0c;要在代码中设置控件的drawableLeft&#xff0c;drawableRight&#xff0c;drawableTop&#xff0c;drawableBottom属性。 我们知道在xml中设置的方法为&#xff1a; android:drawableLeft"drawable/xxxxx"但是在代码中并没有相关的setDr…

Java 冒泡排序

冒泡排序–时间复杂度n^2 对数组序列从前向后依次比较相邻两个元素的大小,若逆序则两个元素交换位置如果一趟下来没有发生交换,则说明序列有序,可以在序列中设置一个标志flag判断元素是否发生交换,从而来减少不必要的比较(在写完排序算法后再写)小结:一共进行数组大小-1次的外…

使用openssl开源AES算法,实现aes、aes-cbc和aes-ecb对字符串的加解密

注意事项 对于用户输入的密码进行了md5运算&#xff0c;从而保证数据格式的统一性 内部调用的随机函数&#xff0c;参考我的其他博文 参考链接 头文件crypto_util.h #pragma once#include <string>namespace hsm{namespace mgmt{void get_md5_digest(const std::strin…

Android学习指南

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

使用memcmp函数判断两个函数的前n位字节数是否相等

memcmp函数的介绍 头文件&#xff1a;#include <string.h>定义函数&#xff1a;int memcmp (const void *s1, const void *s2, size_t n);函数说明&#xff1a;memcmp()用来比较s1 和s2 所指的内存区间前n 个字符。字符串大小的比较是以ASCII 码表上的顺序来决定&#x…

java 选择排序

选择排序–时间复杂度n^2 第一次从arr[0]–arr[n-1]中选出最小值,与arr[0]交换 第二次从arr[1]–arr[n-1]中选出最小值,与arr[1]交换… 最小数:假定当前这个数是最小数,然后和后面的每个数进行比较,当发现有更小的数时,重定最小数与最小数的下标 总结: 选择排序一共有数组大…

Linux环境下实现unsigned char*向string的转换

代码 unsigned char input_data[input_data_length] {"This is my first encrypted plaintext hello world"}; openssl_enc_string hsm::mgmt::aes_ecb_encrypt_to_string(static_cast<string>((const char * )input_data),password);使用static_cast<st…

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

基本知识点 随机试验: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 代码命名&#xff1f;2、Android需要命名的代码&#xff08;对象&#xff09;有哪些&#xff1f;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.…

安卓牛客专项练习2020.12.10

安卓Activity活动 Android的Activity活动中&#xff0c;我们一般可以归结为四种状态: 1.运行状态Running 2.暂停状态Paused 3.停止状态Stopped 4.销毁状态Destroyed 动画Animation 1.补间动画TWeen Animation 其中包括: 平移Translate Animation 透明Alpha Animation 旋转Ro…

将结构体数据存储到一段字符串string中

核心思想 指定一段内存空间存储结构体数据&#xff0c;然后使用一个指针强制类型转化为结构体类型的&#xff0c;就可以使用这个指针操作结构体相关的成员函数和变量结构体内存只会为定义的变量进行分配内存空间&#xff0c;函数只进行调用&#xff0c;不占据空间 结构体 void…

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

一、背景 idea中搭建Resin运行环境&#xff0c;可以在idea中通过点击Run按钮直接调试应用。 二、Resin下载地址 下载地址&#xff1a;https://caucho.com/products/resin/download/gpl#download 我下载的是tar.gz的&#xff0c;通过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&#xff08;JBoss&#xff09;三、配置Idea四、调试一、简介 首先说一下在linux环境&#xff0c;只需要将war包上传到 wildfly-8.2.0.Final/standalone/deployments 目录&#xff0c;然后到 wildfly-8.2.0.Final/bin 目录下 ./standalone.sh&…

启动linux的rpc服务的命令

命令 sudo service rc-local status