setContentView 流程
setContentView 流程
- Activity -> setContentView
开发者设置入口 - PhoneWindow -> setContentView
mWindow 在 attach 时初始化为 PhoneWindow,同时PhoneWindow也是Window唯一的实现类 - PhoneWindow -> installDecor
这一步的作用是 初始化DecorView, 把DecorView填充到 mContentParent;
generateDecor用于生成DecorViewgenerateLayout用于设置应用系统属性和特别的布局- DecorView - >
onResourcesLoaded方法就是把上一步生成的layout添加到DecorView中
- 上一步就是为了获取
mContentParent, 回到setContentView中,通过inflate方法把layoutResId添加到mContentParent中
如果是使用 AppCompatActivity, 还会多一步设置 mSubDecor。 它是在DecorView 上又加了一层,主要用于设置主题
UI 绘制流程
参考 onCreate和onResume为什么不能直接获取宽高.md
- ActivityThread -> handleLaunchActivity -> performLaunchActivity
performLaunchActivity中主要是做了3件事情:
- 创建了
Activity对象 - 调用
attach, 初始化Window和WindowManager - 调用了
onCreate方法。 - 上面的 setContentView
- ActivityThread -> handleResumeActivity
- 执行 Activity 的 onResume 方法
- 执行
wm.addView(decor, l);, 把之前的 DecorView 添加到视图中,开始执行布局的绘制流程。
- 最后会走到布局管理器中
ViewRootImpl的performTraversals方法中
private void performTraversals() {……// 【关键点1】分发mAttachInfohost.dispatchAttachedToWindow(mAttachInfo, 0);……//【关键点2】开始测量performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);……//【关键点3】开始布局performLayout(lp, mWidth, mHeight);……// 【关键点4】开始绘制performDraw();……}
此时UI绘制流程基本结束,页面也展示出来了
相关文章:
setContentView 流程
setContentView 流程 Activity -> setContentView 开发者设置入口PhoneWindow -> setContentView mWindow 在 attach 时初始化为 PhoneWindow,同时PhoneWindow也是Window唯一的实现类PhoneWindow -> installDecor 这一步的作用是 初始化DecorView, 把Deco…...
基于STM32设计的智能手环(ESP8266+华为云IOT)178
基于STM32设计的智能手环(178) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成【3】ESP8266工作模式配置【4】Android手机APP开发思路【5】项目模块划分1.2 项目功能需求(1)生理参数监测(2)计步功能(3)GPS定位(4)时间显示(5)OLED显示屏展示(…...
EE trade:实物黄金投资的好处和坏处
实物黄金是指以金条、金币、金饰品等形式存在的黄金。实物黄金具有保值、避险、抗通胀等特性,被视为传统的投资避险工具。近年来,随着全球经济形势的不确定性增加,实物黄金的投资价值也受到越来越多的关注。 投资实物黄金的优势 保值性&…...
Flutter RSA公钥转PEM
需添加依赖:pointycastle 参考链接:https://github.com/bcgit/pc-dart/issues/165 import dart:convert; import dart:typed_data;import package:pointycastle/pointycastle.dart; import package:pointycastle/src/platform_check/pl…...
下载站怎么防护DDOS攻击
下载站怎么防护DDOS攻击?随着互联网的发展,下载站作为资源分享的重要平台,面临着日益严峻的DDoS(分布式拒绝服务)攻击威胁。DDoS攻击通过大量恶意请求占用网络资源,导致服务器响应缓慢甚至瘫痪,…...
docker拉取镜像-配置阿里云镜像加速
1、配置阿里云镜像(用于拉取镜像加速) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo syst…...
ai写作软件哪个好?亲测好用的5款工具分享
一眨眼,初伏就要到来了~办公室内的高温仿佛连空气都凝固了,键盘敲击声似乎都变得沉重而迟缓。在这样的天气下,创意与灵感似乎也躲进了阴凉处,办公效率显然大打折扣。 幸运的是,被我找到了新的应对之策,那便…...
Blender 中导出模型fbx
准备模型:确保你的模型已经完成,并且所有的材质、纹理等都已设置好。 应用所有变换: 选择模型,按下 CtrlA,选择 "All Transforms" 以应用所有的变换(位置、旋转和缩放)。 导出模型&a…...
景联文科技以高质量多模态数据集赋能AI大模型,精准匹配提升模型性能
在人工智能的浪潮中,语料数据如同建筑的基石,其质量、规模和运用策略直接决定了AI模型的表现和应用的广泛性。 景联文科技在AI领域深耕多年,打磨了高质量多模态数据集,致力于为不同训练阶段的算法精准匹配高质量数据资源。 3000万…...
【ROS2】中级:tf2-编写监听器(Python)
目标:学习如何使用 tf2 获取帧变换。 教程级别:中级 时间:10 分钟 目录 背景 先决条件 任务 1. 编写监听节点2. 更新启动文件3. 构建4. 运行 摘要 背景 在之前的教程中,我们创建了一个 tf2 广播器来发布乌龟的姿态到 tf2。 在本教…...
用QFramework重构飞机大战(Siki Andy的)(下02)(06-0? 游戏界面及之后的所有面板)
用QFramework重构飞机大战(Siki Andy的)(下02)(06-0? 游戏界面及之后的所有面板) GitHub // 官网的 全民飞机大战(第一季)-----框架设计篇(Unity 2017.3) 全民飞机大战&…...
Apifox报错404:网络错误,请检查网络,或者稍后再试的解决办法
详细报错如图: 解决办法: 1、检查 请求方法(get,post)是否正确,请求的URL是否正确,如果不正确,修改后重新发起请求;如果都正确,再参考2 2、复制curl用postm…...
腾讯混元大模型集成LangChain
腾讯混元大模型集成LangChain 获取API密钥 登录控制台–>访问管理–>API密钥管理–>新建密钥,获取到SecretId和SecretKey。访问链接:https://console.cloud.tencent.com/cam/capi python SDK方式调用大模型 可参考腾讯官方API import json…...
C++心决之stl中那些你不知道的秘密(string篇)
目录 1. 为什么学习string类? 1.1 C语言中的字符串 2. 标准库中的string类 2.1 string类 2.2 string类的常用接口说明 1. string类对象的常见构造 2. string类对象的操作 3.vs和g下string结构的说明 3. string类的模拟实现 3.2 浅拷贝 3.3 深拷贝 3.4 写…...
date 命令学习
文章目录 date 命令学习1. 命令简介2. 语法参数2.1 使用语法2.2 说明2.3 参数说明 3. 使用案例:arrow_right: 星期名缩写 %a:arrow_right: 星期名全写 %A:arrow_right: 月名缩写 %b:arrow_right: 月名全称 %B:arrow_right: 日期和时间 %c:arrow_right: 世纪 %C:arrow_right: 按…...
前端vue后端java使用easyexcel框架下载表格xls数据工具类
一 使用alibaba开源的 easyexcel框架,后台只需一个工具类即可实现下载 后端下载实现 依赖 pom.xml <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependen…...
C#,开发过程中技术点GPT问答记录
6、为什么说GUI编程是事件驱动的? GUI(图形用户界面)编程是一种以图形方式构建用户界面的编程方法,它主要采用事件驱动模型进行程序逻辑的组织。在事件驱动的编程中,程序并不按照固定的顺序线性执行,而是等…...
wifi中的PSR技术
在Wi-Fi网络中,PSR(Preferred Spatial Reuse)是一种新兴技术,旨在提高频谱利用效率,特别是在高密度网络环境中。PSR通过允许多个接入点(AP)和设备在相同频谱资源上同时进行通信,从而…...
电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App
电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App 定制化...
Vscode插件推荐——智能切换输入法(Smart IME)
前言 相信广大程序员朋友在写代码的时候一定会遇到过一个令人非常头疼的事情——切换输入法,特别是对于那些勤于写注释的朋友,简直就是噩梦,正所谓懒人推动世界发展,这不,今天就向大家推荐一款好用的vscode插件&#…...
双向充放电前馈控制:储能变流器PCS_PWM变流器的SVPWM调制与实现
【复现】储能变流器PCS_PWM变流器双向充放电前馈控制SVPWM调制 1、电路构成:三相电网、三相 PWM变流器、Buck/Boost 变换器和蓄电池 2、三相变流器控制:采用电压外环、电流内环双闭环PI 控制,电网电压和电容电流前馈,电感电流解耦…...
香橙派Armbian系统下,用apt一键安装OpenCV的完整流程(含GPG报错解决)
香橙派Armbian系统下OpenCV-Python极简安装指南:绕过源码编译的终极方案 在单板计算机领域,香橙派凭借其出色的性价比逐渐崭露头角。当开发者尝试在这类ARM架构设备上构建计算机视觉应用时,OpenCV往往是不可或缺的核心工具。然而,…...
软件测试之压力测试总结
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件…...
DLSS Swapper实战手册:游戏性能调优与版本管理深度解析
DLSS Swapper实战手册:游戏性能调优与版本管理深度解析 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏中的DLSS版本过时而烦恼吗?DLSS Swapper为您提供了一套完整的解决方案…...
Hunyuan-MT-7B像素翻译终端效果实测:中英日韩四语同屏对照演示
Hunyuan-MT-7B像素翻译终端效果实测:中英日韩四语同屏对照演示 1. 产品概览与核心特色 1.1 像素化翻译新体验 Pixel Language Portal(像素语言跨维传送门)是一款基于Tencent Hunyuan-MT-7B大模型构建的创新翻译工具。与传统翻译软件不同&a…...
实战教你用美股api获取实时行情与报价
前几天我在整理投资数据,突然发现自己平时关注的几支热门美股,价格波动比新闻还快。光靠网页刷新完全跟不上节奏,尤其是NVDA、META这样的科技股,几分钟就能有明显变化。想随时看到最新行情,又不想盯着网页刷新…...
用8086和蜂鸣器DIY音乐盒:手把手教你复刻童年旋律(附完整汇编代码)
用8086和蜂鸣器DIY音乐盒:手把手教你复刻童年旋律(附完整汇编代码) 记得小时候第一次听到电子贺卡发出《生日快乐》的单调旋律时,那种机械却又神奇的"音乐"让我盯着电路板研究了半天。现在想来,那些简单的方…...
千问3.5-2B与Dify平台结合:无需编码快速搭建AI应用
千问3.5-2B与Dify平台结合:无需编码快速搭建AI应用 1. 为什么需要低代码AI开发平台 想象一下,你是一家电商公司的运营负责人,每天需要处理大量客户咨询、生成商品描述、制作营销文案。传统方式要么需要雇佣专业团队,要么得自己学…...
华为OD生存指南:转正挑战、身份认知与职业适配
1. 华为OD转正挑战的真相 刚入职华为OD时,很多人都会被HR描述的转正路径所吸引。四步转正流程听起来清晰明了:有HC、拿绩效A、通过可信认证、工作满一年。但真正进入这个体系后,你会发现每个环节都暗藏玄机。 关于HC(Head Count…...
GitHub加速完全指南:从诊断到优化的全方位解决方案
GitHub加速完全指南:从诊断到优化的全方位解决方案 【免费下载链接】gh-proxy github release、archive以及项目文件的加速项目 项目地址: https://gitcode.com/gh_mirrors/gh/gh-proxy GitHub作为全球最大的代码托管平台,其访问速度直接影响开发…...
