当前位置: 首页 > news >正文

适配Android12启动页

今天我们讲个什么话题呢?我们今天讲的内容是,Android12新启动页的支持API。

启动页我想大家都不陌生吧,通常的写法就是先创建一个SplashActivity,在onCreate中

Handler(Looper.getMainLooper()).postDelayed({// 在这里跳转主界面
}, 2000)

,对吧?

Android开发本不使用启动页,结果就被我们一些大厂玩坏了,比较有名的就是腾讯QQ的那只企鹅,估计是为了体现品牌形象,或是为了方便打广告,于是就强加了一个启动页。这样一来倒好,各个互联网平台纷纷效仿,人家技术好倒罢了,一些新入行的小白也开始这样写,于是就引出了启动黑屏或白屏一段时间等问题,这里我就不多吐槽了。

奇怪的是,Android官方现在还真搞了这么一个启动页的API,目的应该不是为了方便打广告,而是保证最快打开一个页面展示给用户,然后耗时的延后加载。不要让用户觉得卡顿,从而引发不好的用户体验。

言归正题,怎么使用呢?在此之前,我们要知道冷启动、温启动和热启动。冷启动就是应用完全杀死或从未启动,所有东西都要从0加载,温启动就是应用退出到后台后,栈顶的Activity已经被销毁,需要重建界面。而热启动就是退出后台没多久,可以继续使用的时候。

我们要引入这么一个包

implementation 'androidx.core:core-splashscreen:1.0.0-beta02'

然后在MainActivity中加入

class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {val splashScreen = installSplashScreen()super.onCreate(savedInstanceState)splashScreen.setKeepOnScreenCondition {SystemClock.sleep(2000)false}setContentView(R.layout.activity_main)}
}

installSplashScreen()最好在onCreate之前。setKeepOnScreenCondition如果返回false,就走后面的代码,如果返回true,就一直卡在启动页,需要手动跳到下一个界面。所以,我们可以在返回false之前做一些初始化和加载操作。这样写了确实使用了SplashScreen啊,但是不好看啊,于是我们要改一下闪屏的样式。在themes.xml中

<resources xmlns:tools="http://schemas.android.com/tools"><style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar"><!-- Primary brand color. --><item name="colorPrimary">@color/purple_500</item><item name="colorPrimaryVariant">@color/purple_700</item><item name="colorOnPrimary">@color/white</item><!-- Secondary brand color. --><item name="colorSecondary">@color/teal_200</item><item name="colorSecondaryVariant">@color/teal_700</item><item name="colorOnSecondary">@color/black</item><!-- Status bar color. --><item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item></style><style name="Theme.App.MyStarting" parent="Theme.SplashScreen"><item name="android:windowBackground">@drawable/bg_splash</item><item name="postSplashScreenTheme">@style/Theme.MyApplication</item></style>
</resources>

我们要加入一个继承Theme.SplashScreen的主题Theme.App.MyStarting,然后在AndroidManifest.xml指定给MainActivity。然后把原来真正的MainActivity主题,使用postSplashScreenTheme指向原来的主题Theme.MyApplication。

我们可以使用kotlin的协程来请求一些必要的配置数据,然后再在setKeepOnScreenCondition返回false,而非写死的一段时间,这样启动页是否更加优雅了呢?

Android12的系统会自动给所有应用加入一个启动页,就是中央显示一个小logo的那种,我们自己做了适配就不会在Android12上显示两个启动页了。

相关文章:

适配Android12启动页

今天我们讲个什么话题呢&#xff1f;我们今天讲的内容是&#xff0c;Android12新启动页的支持API。 启动页我想大家都不陌生吧&#xff0c;通常的写法就是先创建一个SplashActivity&#xff0c;在onCreate中 Handler(Looper.getMainLooper()).postDelayed({// 在这里跳转主界…...

人工智能在医学领域的应用及技术实现

欢迎来到 Papicatch的博客 目录 &#x1f349;引言 &#x1f349; 医学影像分析 &#x1f348;技术实现 &#x1f34d;数据准备 &#x1f34d;模型构建 &#x1f34d;模型训练 &#x1f34d;模型评估 &#x1f34d;应用部署 &#x1f348;示例代码 &#x1f349; 基因…...

MySQL—多表查询—练习(1)

一、引言 上几篇关于多表查询的基本几个部分全部学习完了。 多表查询的基本类型的查询包括以下&#xff1a; 1、内连接&#xff08;隐式内连接、显示内连接&#xff09;&#xff1a;... [INNER] JOIN ... ON 条件; &#xff09; 2、外连接&#xff08;左外连接、右外连接&…...

千益畅行:合法合规的旅游卡服务,打破误解

近期&#xff0c;千益畅行旅游卡服务引起了公众的广泛关注。然而&#xff0c;一些人对该服务存在误解&#xff0c;认为其存在某种欺诈行为。但经过深入了解和全网搜索证据&#xff0c;我们可以确认&#xff0c;千益畅行实际上是一家合法合规的旅游卡服务提供商。 千益畅行旅游…...

【Echarts系列】水平柱状图

【Echarts系列】水平柱状图 序示例数据格式代码 序 为了节省后续开发学习成本&#xff0c;这个系列将记录我工作所用到的一些echarts图表。 示例 水平柱状图如图所示&#xff1a; 数据格式 data [{name: 于洪区,value: 2736},{name: 新民市,value: 2844},{name: 皇姑区,…...

怎样把便签里的内容移到桌面?桌面便签软件使用方法

每次打开电脑&#xff0c;我总是被满屏的文件和图标弄得眼花缭乱。那些记录在各式各样便签里的重要事项&#xff0c;经常被埋没在这信息的海洋中&#xff0c;找起来真是头疼。想必很多人都有过这样的困扰&#xff1a;如何在繁杂的桌面环境中&#xff0c;一眼就看到自己需要提醒…...

量化入门:qmt获取可转债基本信息和行情数据

💻专业版获取可转债数据 今天将展示如何使用Python和QMT来获取可转债的实时数据和财务数据。 🔬 获取可转债基本信息 迅投的券商版和基础版都不支持可转债行情,投研专业版才支持,一年大概5000元。免费的券商版可参考QMT量化入门 投研专业版才有权限调用download_cb_d…...

AVL树 ---(C++)

本篇讲全面的讲解 AVL 树的插入&#xff0c;旋转以及验证 AVL 树的性能&#xff08;本篇未实现删除代码&#xff09;。至于为什么会有 AVL 树&#xff0c;这是因为简单的二叉搜索树并不能直接的保证搜索的效率&#xff0c;因为当我们在二叉搜索树中插入一段有序的序列的时候&am…...

基于spring boot+MySQL 小区物业管理系统-计算机毕设 附源码37236

spring boot 小区物业管理系统 摘 要 在网络信息的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;小区物业只能以客户为导向&#xff0c;以产品的持续创新作为小区物…...

Linux/Ubuntu/Debian常用服务管理命令

Linux/Ubuntu/Debian常用服务管理命令 在 Linux 系统中&#xff0c;服务管理是系统管理员日常维护工作的重要组成部分。通过一些常用的命令&#xff0c;我们可以查看服务状态、启动或停止服务、重启服务等。掌握这些命令&#xff0c;可以让系统管理工作更加高效和便捷。 1. s…...

Maven的三种项目打包方式——pom,jar,war的区别

1、pom&#xff1a;用在父级工程或聚合工程中&#xff0c;用来做jar包的版本控制&#xff0c;必须指明这个聚合工程的打包方式为pom。 聚合工程只是用来帮助其他模块构建的工具&#xff0c;本身并没有实质的内容。具体每个工程代码的编写还是在生成的工程中去写。 对于在父工程…...

[手游] 三色绘恋S Mobile Link

语音合成TTS: 文字转成语音的工具 WPS免登录一键修改器: 去除烦人的登录且能正常使用 故事简介&#xff1a; 深秋的雨季即将到来&#xff0c;正值那个为人所熟知的故事发生的前一年—— 地点&#xff1a;湖北省的重点高中&#xff0c;武汉师贰高校。 新学年开始&#xff0c;各…...

nss刷题(4)

1、[SWPUCTF 2021 新生赛]easyrce <?php error_reporting(0); highlight_file(__FILE__); if(isset($_GET[url])) { eval($_GET[url]); } ?> if(isset($_GET[url])) isset函数用来检测url变量是否存在&#xff1b;$_GET函数获取变量数据 eval($_GET[url]); eval函数用…...

iOS调整collectionViewCell顺序

效果图 原理 就是设置collectionView调整顺序的代理方法&#xff0c;这里要注意一点 调整过代理方法之后&#xff0c;一定要修改数据源&#xff0c;否则导致错乱。 还有就是在collectionView上面添加一个长按手势&#xff0c;在长按手势的不同阶段&#xff0c;调用collectionV…...

【回调函数】

1.回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被用来调用其所指向的函数 时&#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方…...

找树左下角的值-力扣

本题个人认为不能叫做 找树左下角的值&#xff0c;左下角再怎么说也应当在树的左子树上&#xff0c;本题要求的节点是树最底层最左边的值。 首先想到的解法是对二叉树进行层序遍历&#xff0c;并记录本层第一个节点的值&#xff0c;当层序遍历结束时&#xff0c;此时记录的值即…...

【AI应用探讨】— Gemma2模型应用场景

目录 1. 金融风险管理 2. 营销策略优化 3. 医疗保健领域 4. 供应链管理 5. 人力资源管理 6. 自然语言处理&#xff08;NLP&#xff09; 7. 图像识别 8. 音频信号处理 9. 总结 1. 金融风险管理 场景描述&#xff1a;Gemma 2模型在金融领域可用于预测金融市场的波动性和…...

树二叉树

树 ​ 树是 n&#xff08;n≥0&#xff09;个结点的有限集。当 n 0时&#xff0c;称为空树。在任意一颗非空树中应满足&#xff1a; &#xff08;1&#xff09;有且仅有一个特定的称为根的结点。 &#xff08;2&#xff09;当 n > 1时&#xff0c;其余结点可分为 m&…...

无源晶振振荡电路失效问题分析与解决策略

无源晶振&#xff08;晶体谐振器&#xff09;在电子设备中扮演着至关重要的角色&#xff0c;为数字电路提供稳定的时钟信号。然而&#xff0c;振荡电路一旦失效&#xff0c;可能会导致整个系统运行不正常。晶发电子将从三个主要方面分析无源晶振振荡电路失效的问题&#xff0c;…...

LIMS系统在汽车第三方检测实验室的应用

随着汽车行业的快速发展&#xff0c;汽车第三方检测实验室的工作量不断增加&#xff0c;对实验室的管理效率和数据准确性提出了更高的要求。LIMS系统的引入可以实现实验室的全面数字化管理&#xff0c;提高工作效率&#xff0c;降低运营成本&#xff0c;并提升数据质量与决策支…...

ComfyUI-Manager插件不显示问题终极指南:从原理到实战的完整解决方案

ComfyUI-Manager插件不显示问题终极指南&#xff1a;从原理到实战的完整解决方案 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable…...

tabtoy性能优化秘籍:多核并发导出与缓存加速技巧

tabtoy性能优化秘籍&#xff1a;多核并发导出与缓存加速技巧 【免费下载链接】tabtoy 高性能表格数据导出器 项目地址: https://gitcode.com/gh_mirrors/ta/tabtoy 在处理大量表格数据导出时&#xff0c;性能往往是开发者面临的主要挑战。tabtoy作为一款高性能表格数据导…...

OdinSerializer扩展开发完全手册:创建自定义序列化组件

OdinSerializer扩展开发完全手册&#xff1a;创建自定义序列化组件 【免费下载链接】odin-serializer Fast, robust, powerful and extendible .NET serializer built for Unity 项目地址: https://gitcode.com/gh_mirrors/od/odin-serializer OdinSerializer是一款专为…...

AI VTuber技术栈全解析:从Live2D到GPT-SoVITS的实战搭建指南

1. 项目概述&#xff1a;为什么我们需要一份AI VTuber的“Awesome”清单&#xff1f; 如果你最近在GitHub、B站或者一些技术社区里逛过&#xff0c;大概率会看到一个词反复出现&#xff1a; AI VTuber 。它不再是科幻电影里的概念&#xff0c;而是正在快速渗透到直播、内容创…...

PostgreSQL日期时间格式化终极指南:to_char、to_timestamp、extract epoch实战详解

PostgreSQL日期时间格式化终极指南&#xff1a;to_char、to_timestamp、extract epoch实战详解 在处理数据库时&#xff0c;日期和时间操作几乎是每个开发者都会遇到的挑战。PostgreSQL作为功能强大的开源关系型数据库&#xff0c;提供了丰富的日期时间处理函数&#xff0c;能够…...

基于LLM的MUD游戏AI智能体框架:从感知-思考-行动循环到工程实践

1. 项目概述&#xff1a;一个面向MUD游戏的智能体框架最近在折腾AI智能体&#xff08;Agent&#xff09;相关的项目&#xff0c;发现了一个挺有意思的仓库&#xff1a;zn0nz/mud_agent。乍一看名字&#xff0c;可能很多朋友会有点懵&#xff0c;MUD是什么&#xff1f;Agent又怎…...

使用 Taotoken 后模型 API 响应延迟与稳定性效果实测观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken 后模型 API 响应延迟与稳定性效果实测观察 作为一名需要频繁调用大模型 API 的开发者&#xff0c;模型服务的响应速…...

AI图像生成预设库:开源项目kaushalrao/ai-editor-presets使用指南

1. 项目概述&#xff1a;AI驱动的编辑预设库如果你和我一样&#xff0c;经常在各类AI图像生成工具里“炼丹”&#xff0c;那你一定对“预设”&#xff08;Presets&#xff09;这个概念不陌生。简单来说&#xff0c;预设就是一套预先配置好的参数组合&#xff0c;它能让你一键复…...

ARMv8系统寄存器详解与L2MERRSR_EL1应用

1. ARM系统寄存器概述在ARMv8架构中&#xff0c;系统寄存器是处理器内部用于控制和监控CPU运行状态的关键组件。这些寄存器不同于通用寄存器&#xff0c;它们专门用于系统级操作&#xff0c;如内存管理、异常处理、性能监控等。系统寄存器通过特定的指令进行访问&#xff0c;在…...

ChatGPT插件开发者签证通道开放?深度解析2026年美国USCIS新增O-1B“AI原生应用架构师”认证路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT插件生态系统的演进脉络与O-1B新政战略定位 ChatGPT插件系统自2023年3月开放以来&#xff0c;经历了从封闭API集成到开放开发者协议、再到平台化治理的三阶段跃迁。早期插件依赖硬编码函数调用&…...