最新android icon和splashScreen适配兼容至2024android

android在12做了splashScreen的变动,即,android12+有自带的screenSplash过渡,不论你是否自己有变化,都会插入该动画。
android8做了icon的巨大变动。13做了图标的主题兼容。

一、icon制作

制作

使用android自带的工具,对着res目录,右键,new,image Asset:

  1. 模式默认Launcher Icons(Adaptive and Legacy);
  2. Path选择你的切图或者svg更好;
  3. 一般可能需要Resize一下,调整图片的占比(本人实测80%~85%左右,各自根据实际调整),否则显示太靠边不好看;
    请添加图片描述
  4. Background layer一般选择纯色,比如FFFFFF。
    请添加图片描述
    然后Next,就生成了。
    最后在AndroidManifest xml中引用
        android:icon="@mipmap/new_icon"android:roundIcon="@mipmap/new_icon_round"
兼容android13主题变化

为了兼容android13的主题做法,给2个anydpi-v26,xml添加monochrome标签。直接引用new_icon_foreground即可。
可以参考下图。
请添加图片描述

为何普通xml和round xml的内容一模一样?

然而,我们查看这2个xml,就会有疑问,为什么,我们发现普通xml和round xml的内容一模一样?

经过查询stackoverflow,得到了解释,我用大白话讲一遍:
对于v26以下的手机,anydpi-v26这个目录自然是不会被引用的,因此,我们androidManifest.xml中@mipmap/new_icon或者new_icon_round,都将直接引用到具体dpi目录的具体图片本身。
而高于26的版本,他系统的round图标的方式,并不是根据round本身图来决定,则是始终使用foregound图+background图拼成的。
请添加图片描述
因此,解释了为什么2个xml一模一样,而且为什么我们需要在代码里面留下new_icon和new_icon_round这2种图的原因,这是为了低版本自己去取而留下的。
这也解释了引用帖子https://blog.csdn.net/minping9101/article/details/129436383中提到的huawei或者某些应用市场,他们默认会从mipmap中取我们androidmanifest的icon名字对应的图标,就相当于低版本的android一样。

如果不用兼容26以下。比如minSdk就是26。则可以删除new_icon和new_icon_round了。

最后,
如果你觉得图片太多,可以删除,google store的图;可以删除mdpi的目录和xxxdpi的目录图。一般情况用不到。

二、SplashScreen

如果是个全新app,不做这个兼容,在android12以下老版本就会白屏比较久;在以上就默认添加了过渡。
如果是老app,你有一个自己品牌过度activity,那么在android12以上就会过度2次。
所以还是有必要兼容处理一下的。这里给出我个人的解决代码,以便以后快速复制新项目。

如果我们忽略官方那种动来动去的效果的话,很简单。如果需要使用那种动画和自定义延长时间等特殊则参考文章末尾链接自行研究,一般情况我们不需要动画。

  1. 引入gradle:
    implementation 'androidx.core:core-splashscreen:1.0.1'
  1. 定义主题:
    <style name="SplashTheme" parent="Theme.SplashScreen"><item name="postSplashScreenTheme">@style/YourAppTheme</item><item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash</item><item name="windowSplashScreenBackground">#ffffff</item><item name="windowSplashScreenAnimationDuration">1000</item>
<!--        <item name="android:windowBackground">@drawable/bg_splash_window</item>--></style>

一般情况,你的YourAppTheme app主题已经继承了Theme.xxx.NoBar等。如果没有,则继承Theme.AppCompat。否则报错windowSplashScreenAnimatedIcon 提供你的图片。这里有一点要求。因此,你需要让图画居中,四周留白要多一点,自行调整。

品牌图片:尺寸必须为 200×80 dp。
具有图标背景的应用图标:尺寸必须为 240×240 dp,且位于直径 160 dp 的圆圈内。
无图标背景的应用图标:尺寸必须为 288×288 dp,并且位于直径 192 dp 的圆圈内。
例如,如果图片的完整尺寸为 300×300 dp,则图标需要位于直径 200 dp 的圆圈内。圆圈以外的所有内容都会变为不可见(已遮盖)。

  1. 引入AndroidManifest的启动activity:
        <activityandroid:name="com.xxx.XXSplashActivity"
android:configChanges="screenSize|keyboard|keyboardHidden|fontScale|locale|orientation|screenLayout|uiMode|navigation"android:exported="true"android:screenOrientation="portrait"android:theme="@style/SplashTheme"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
  1. SplashActivity代码参考:

private var lastLauncherApp = 0Lclass SplashActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {val splashScreen = installSplashScreen()super.onCreate(savedInstanceState)setContentView(createLayout())splashScreen.setKeepOnScreenCondition { true }launcherApp(intent)}/*** 创建基础界面。无需设置图标。通过主题搞定的。*/open fun createLayout(): ViewGroup {val layout = RelativeLayout(this)layout.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)return layout}override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)launcherApp(intent)}fun goActivity() {startActivityFix(Intent(this, MainActivity::class.java))}fun launcherApp(intent: Intent?) {//直接从android Studio run起来会初始化多次。val cur = System.currentTimeMillis()if (cur - lastLauncherApp > 1000L) {lastLauncherApp = cur} else {return}goActivity()this.finish()}
}//某个Util类:
fun Context.startActivityFix(intent: Intent, opts:Bundle? = null) {if (this !is Activity) {intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)}try {ActivityCompat.startActivity(this, intent, opts)} catch (e:Exception) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {// Android 10 或更高版本intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)} else {// Android 10 以下版本intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)}ActivityCompat.startActivity(this, intent, opts)}
}

参考资料:
https://blog.csdn.net/minping9101/article/details/129436383
https://zhuanlan.zhihu.com/p/556819230?eqid=e969f5150007822f0000000664868205&utm_id=0
https://developer.android.google.cn/develop/ui/views/launch/splash-screen?hl=zh-cn

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

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

相关文章

03:HAL---中断

目录 一:中断 1:简历 2:AFIO 3:EXTI 4:NVIC基本结构 5:使用步骤 6:设计中断函数 二:中断的应用 A:对外式红外传感计数器 1:硬件介绍 2:计数代码 B:旋转编码计数器 1:硬件介绍 2:旋转编码器代码 C:按键控制LED D:代码总结 一:中断 1:简历 中断&#xff1a;在主程序…

第二十二周周报

论文研读&#xff1a;Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB Image 粗读10篇文献。 通过图2 我可以知道这个论文大概实现的这个姿态估计效果的方法&#xff0c;首先是把图片输入到DetectNet网络&#xff0c;该网络…

Python批量提取Word文档表格数据

在大数据处理与信息抽取领域中&#xff0c;Word文档是各类机构和个人普遍采用的一种信息存储格式&#xff0c;其中包含了大量的结构化和半结构化数据&#xff0c;如各类报告、调查问卷结果、项目计划等。这些文档中的表格往往承载了关键的数据信息&#xff0c;如统计数据、项目…

打破信息差,计算机专业必须知道的进大厂的方式

现在的信息茧房有多可怕&#xff0c;如果你提前知道这几个进大厂实习的方法&#xff0c;你将超越百分之九十的大学生。 一、高校就业指导中心 大学生们找实习可以从本校高校就业指导中心网站上找&#xff0c;这个渠道建议重点关注下&#xff0c;此类渠道推荐的实习机会&#…

B2B2C电商系统源代码部署,让你轻松开启网店生意

在当今数字化时代&#xff0c;开设一家网店已经变得异常简单。借助B2B2C电商系统源代码部署&#xff0c;你可以轻松搭建自己的在线商城&#xff0c;开始网店生意。这种系统为企业提供了一个强大的平台&#xff0c;让他们可以直接与制造商和消费者进行交易&#xff0c;从而实现品…

ETL的数据挖掘方式

ETL的基本概念 数据抽取&#xff08;Extraction&#xff09;&#xff1a;从不同源头系统中获取所需数据的步骤。比如从mysql中拿取数据就是一种简单的抽取动作&#xff0c;从API接口拿取数据也是。 数据转换&#xff08;Transformation&#xff09;&#xff1a;清洗、整合和转…

Java项目:46 ssm005基于SSM框架的购物商城系统+jsp(含文档)

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 项目是单体ssm电商水果平台&#xff0c;包括前台商城平台及后台管理系统 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流…

连接端口和连接端口转换OrCAD补丁

来介绍此功能之前先复习一下一些OrCAD的基础知识。 说到连通两个器件&#xff0c;有什么办法呢&#xff1f;最直接的就是用线连通。比如下面这两个器件需要连通&#xff0c;我们可以直接用线Place wire连接。 但是如果这两个器件由于某些原因&#xff0c;他们之间相隔很远&…

c# 使用 Oxyplot 创建和绘制 ContourSeries

我有一个 WPF 应用程序&#xff0c;我需要在其中可视化 y y(x1, x2)&#xff0c;其中 x1、x2 是线性坐标。我可以使用 Oxyplot 中的 HeatMapSeries 来做到这一点&#xff0c;但是当我想在同一窗口中绘制两组数据时&#xff0c;热图不是合适的工具。几个轮廓系列会更好。 现在&…

MS5583N高分辨率模数转换器

产品简述 MS5583N 是一款高分辨率模数转换器&#xff0c;内部集 成高阶 Σ-Δ 调制器、低噪声可编程增益放大器、多 路输入选择器和多种内部数字滤波器。其转换速率 从 250SPS 到 4kSPS 。此外&#xff0c;芯片内部集成失调校准 寄存器和增益校准寄存器。 MS5583N …

haproxy-高性能负载均衡反向代理服务

目录 一、HAProxy&#xff08;High Availability Proxy&#xff09;概述 1、HAProxy的概念 2、HAProxy的主要特性 3、HAProxy的优缺点 4、Haproxy负载均衡策略 5、LVS、nginx、HAProxy的区别 二、安装HAProxy 1、yum安装 2、第三方rpm包安装 3、编译安装 3.1 解决 l…

day52 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

考虑到一般动态规划的写法是n方&#xff0c;为了降低复杂度&#xff0c;考虑每次假如选择当前数dp[i]对应最长的序列&#xff0c;就找前面上一个数&#xff08;已经做递推的时候记录了上一个数的比他小的一个数&#xff0c;因为等于上一个比他小的数的序列长度&#xff08;已经…

寻找峰值(二分查找思想)

解法一&#xff1a;暴力求解 int findPeakElement(int* nums, int numsLen ) {// write code herefor (int i 1; i < numsLen - 1; i) {if ((nums[i] > nums[i - 1]) && (nums[i] > nums[i1])) {return i;}}if (nums[numsLen - 1] > nums[numsLen - 2]) …

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

鸿蒙开发为什么这么火,现在入行鸿蒙是否来的及?

鸿蒙开发是当前备受关注的技术领域之一&#xff0c;对于想要入门学习鸿蒙开发的初学者来说&#xff0c;需要掌握一定的基础知识和技能。鸿蒙开发又是否能为程序员们带来一片光明的未来呢&#xff1f;让我们一同探讨这些问题。 对于初学者来说&#xff0c;鸿蒙开发是否易于上手呢…

MySQL基础-----多表关系与查询概述

目录 前言 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.概述 2.笛卡尔积 3.分类 前言 本期我们开始学习新的章节&#xff0c;也就是MySQL的多表关系与查询&#xff0c;在本期主要是讲述概念性的东西&#xff0c;大概介绍多表关系是什么&#xff0c;为什…

应用方案 | D54123B低功耗漏电保护电路

概 述 A&#xff09;、D54123B是一款高性能 CMOS 漏电保护器专用电路。芯片内部包含稳压电源、放大电路、比较器电路、延时电路、计数器电路、跳闸控制电路及跳闸驱动电路。芯片外围应用有脱扣线圈、压敏电阻、稳压二级管、二级管、电阻、电容等元器件。 B&#xff09;、内部…

基于SSM SpringBoot vue家教交流平台

基于SSM SpringBoot vue家教交流平台 系统功能 管理员登录 家长登录注册 学生登录注册 教师登录注册 个人中心 家长信息管理 学生信息管理 教师信息管理 招聘家教管理 应聘家教管理 确认招聘管理 论坛管理 系统管理 我的收藏管理 管理员管理 开发环境和技术 开发语言&#x…

宏任务与微任务:JavaScript异步编程的秘密

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

高等数学常用公式

高等数学常用公式 文章目录 内容大纲 内容 大纲 感谢观看 期待关注 有问题的小伙伴请在下方留言&#xff0c;喜欢就点个赞吧