关于Android12以上的闪屏兼容

Android适配最新SplashScreen方案:让启动页不再“翻车“ Android 12+全新SplashScreen API适配指南:从传统方案的"坑"到新方案的"爽点",详解三步实现启动页优化。包含主题配置、版本兼容处理、性能优化三板斧和深色模式适配技巧,解决图标变形、显示时长等常见问题。文章指出启动页优化是提升用户体验的关键环节,强调新API需版本判断、动画时长控制在1000ms内等要点,并展望Compose集成等未来发展方向。文风幽默,提供实用代码示例和避坑指南,帮助开发者实现"秒开"体验。 阅读详情

Custom Splash Screen on Android - Why You’re Doing It Wrong - pl-coding.com

对应的视频

https://www.youtube.com/watch?v=eFZmMSm1G1c

国内大部分应用都有闪屏,如果到12上没有处理的话,会出现两个闪屏的结果

因为12默认会有一个闪屏

官方给出了迁移建议

https://developer.android.com/develop/ui/views/launch/splash-screen/migrate?hl=zh-cn

郭林的这篇文章也写的非常详细

Android 12 SplashScreen API快速入门

添加依赖

使用官方的库可以兼容之前的设备,开屏有一样的表现

implementation("androidx.core:core-splashscreen:1.0.1")

定义主题

theme.xml

   <style name="Theme.App.Starting" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/black</item>
        <item name="postSplashScreenTheme">@style/Theme.AnimatedSplashScreen</item>
    </style>

theme.xml 31

 <style name="Theme.App.Starting" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/black</item>
        <item name="postSplashScreenTheme">@style/Theme.AnimatedSplashScreen</item>
        <item name="android:windowSplashScreenAnimatedIcon">@drawable/animated_logo</item>
    </style>

31多了动画定义

animated_logo.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/logo">

    <target
        android:animation="@animator/logo_animator"
        android:name="animationGroup" />

</animated-vector>

其中 logo 定义图标,logo_animator定义动画了对logo中 animationgroup进行一些动画操作

logo.xml

<vector android:height="50dp" android:viewportHeight="3500"
    android:viewportWidth="3500" android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <group
        android:name="animationGroup"
        android:pivotX="1750"
        android:pivotY="1750">
        <path android:fillColor="#00f15e"
            android:pathData="m1843.9,1192.1l-274.6,444.5c-5.2,8.5 -14.5,13.6 -24.5,13.6h-721.7c-6.3,0 -12.4,-2.1 -17.4,-5.9l-249,-189.3c-3.5,-2.7 -6.3,-6.1 -8.3,-10L3,354.4c-7.1,-14.2 -1.4,-31.5 12.9,-38.6 4,-2 8.4,-3 12.9,-3h1372.9c10.9,0 20.8,6.2 25.7,15.9l417.8,835.5c4.5,8.9 4,19.5 -1.3,28Z" android:strokeWidth="0"/>
        <path android:fillColor="#00f15e"
            android:pathData="m2056.1,1913.7l-628.7,1257.4c-4.9,9.7 -14.8,15.9 -25.7,15.9H28.8c-15.9,0 -28.7,-12.9 -28.7,-28.7 0,-4.5 1,-8.9 3,-12.9l534.2,-1068.1c2,-3.9 4.8,-7.3 8.3,-10l249,-189.3c5,-3.8 11.1,-5.9 17.4,-5.9h1218.4c15.9,0 28.7,12.9 28.7,28.8 0,4.4 -1,8.8 -3,12.8Z" android:strokeWidth="0"/>
        <path android:fillColor="#00f15e"
            android:pathData="m3485.2,1190l-602.1,454.5c-5,3.8 -11.1,5.8 -17.3,5.8h-511.3c-10.9,0 -20.8,-6.2 -25.7,-15.9L1688.8,354.3c-7.1,-14.2 -1.3,-31.5 12.9,-38.6 4,-2 8.4,-3 12.8,-3h1020.8c5.2,0 10.3,1.4 14.8,4.1l616,368.3c6.5,3.9 11.2,10.2 13.1,17.6l116.6,457.3c2.9,11.2 -1.3,23.1 -10.6,30Z" android:strokeWidth="0"/>
        <path android:fillColor="#00f15e"
            android:pathData="m3471.1,3187.2c16.1,0 29.4,-13.3 28.9,-29.4 -15.5,-444.4 -380.7,-800 -828.9,-800s-813.4,355.5 -828.8,800c-0.6,16.1 12.8,29.4 28.9,29.4l1599.9,-0.1Z" android:strokeWidth="0"/>
    </group>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:interpolator="@anim/overshoot_interpolator">

    <propertyValuesHolder
        android:propertyName="rotation"
        android:valueType="floatType"
        android:valueFrom="0.0"
        android:valueTo="360.0" />

    <propertyValuesHolder
        android:propertyName="scaleX"
        android:valueType="floatType"
        android:valueFrom="0.0"
        android:valueTo="0.4" />

    <propertyValuesHolder
        android:propertyName="scaleY"
        android:valueType="floatType"
        android:valueFrom="0.0"
        android:valueTo="0.4" />

</objectAnimator>

应用主题


        android:theme="@style/Theme.App.Starting"
        

这样当应用启动后,不需要添加额外的界面,就可以有一个logo的动画闪屏

但是动画结束,如果我们想延长呢可以加setKeepOnScreenCondition

class MainActivity : ComponentActivity() {

    private val viewModel by viewModels<MainViewModel>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        installSplashScreen().apply {
            setKeepOnScreenCondition {
                !viewModel.isReady.value
            }
            setOnExitAnimationListener { screen ->
                val zoomX = ObjectAnimator.ofFloat(
                    screen.iconView,
                    View.SCALE_X,
                    0.4f,
                    0.0f
                )
                zoomX.interpolator = OvershootInterpolator()
                zoomX.duration = 500L
                zoomX.doOnEnd { screen.remove() }

                val zoomY = ObjectAnimator.ofFloat(
                    screen.iconView,
                    View.SCALE_Y,
                    0.4f,
                    0.0f
                )
                zoomY.interpolator = OvershootInterpolator()
                zoomY.duration = 500L
                zoomY.doOnEnd { screen.remove() }

                zoomX.start()
                zoomY.start()
            }
        }

        setContent {
            AnimatedSplashScreenTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    Greeting("Android")
                }
            }
        }
    }
}

但是基本上。。老板不会满意这么简单的动画

以前做的比较多的是,使用Lottie的库,可以有一些非常流畅绚丽的动画效果。

那如果自己做闪屏的话,就需要再12上除去默认的闪屏

很不幸,在Android 12设备上,您不能通过他们提供的API直接禁用默认的启动画面。如果您的应用程序具有自定义启动画面,并且您不想迁移到这种新方法,则可以尝试以下黑客技巧。基本上,您需要在res\values-v31\themes.xml中覆盖您的启动屏幕主题并设置一个透明的图标。

<!-- My custom theme for splash screen activity -->
<style name="Theme.Splash" parent="Theme.Main">
    <item name="android:windowBackground">@color/background</item>
    <!-- Set a transparent .png as your icon -->
    <item name="android:windowSplashScreenAnimatedIcon">@drawable/transparent_image</item>
</style>

这将帮助你消除app在启动时闪屏期间出现的默认应用程序图标。

that's it 

Android启动页适配全攻略:从.9.png到SplashScreen API 移动应用启动页作为用户体验的第一触点,其技术实现涉及UI渲染优化与系统兼容性处理两大核心领域。在Android开发中,.9.png技术通过定义可拉伸区域实现图片自适应,而Android 12引入的SplashScreen API则提供了标准化的启动流程控制。这些技术不仅能有效解决冷启动白屏问题,还能确保品牌元素在各种屏幕比例下的完美展示。针对金融、社交等高要求场景,混合适配方案结合传统.9.png制作技巧与最新系统API,可覆盖99%以上的Android设备。实测数据显示,优化后的启动页能使应用冷启动时间降 阅读详情

相关推荐

安卓启动页兼容性深度解析:从基础适配到Android 12+ SplashScreen API高级优化

本文深入解析安卓启动页兼容性问题,从基础适配策略到Android 12+ SplashScreen API的高级优化技巧。涵盖不同版本系统的适配方案、性能优化方法及疑难问题排查指南,帮助开发者实现全版本兼容的流畅启动体验。特别针对Android 12的SplashScreen API进行了深度剖析,提供实战代码示例和高级技巧。

weixin_28730353的博客 307

Android启动页适配与.9.png制作全指南

在移动应用开发中,UI适配是确保用户体验一致性的关键技术。.9.png作为Android特有的图片格式,通过定义可拉伸区域和内容区域,有效解决了多设备屏幕适配问题。其工作原理是在PNG图片四周添加1像素边界线,系统根据标记智能拉伸指定区域。这种技术特别适用于启动页(Splash Screen)等需要完美适配的场景,能显著提升用户留存率。开发中常用Android Studio的Draw 9-patch工具制作,需注意避开文字图标区域。结合最新的SplashScreen API,开发者可以构建适配从传统屏幕到全

weixin_29185199的博客 317

从H5到APK:我用Cordova 12把网页打包成安卓App的完整踩坑实录

本文详细记录了使用Cordova 12将H5网页打包成安卓APK的完整过程,包括环境安装、项目初始化、配置文件调整、调试技巧、构建优化及发布准备等关键步骤。特别针对跨平台开发中常见的版本兼容性和性能问题提供了实用解决方案,帮助开发者高效完成移动应用开发。

weixin_30606461的博客 556

关于安卓12闪屏页适配(一)

安卓12启动页适配

motosheep的博客 2694

Android 12(API 31)新特性及适配指南

Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经逐步开启了Android 12正式版本的更新。当前,对于Android应用开发者来说,Android 12 的软件兼容适配已迫在眉睫。

bjxiaxueliang的CODING小栈 1万+

微信小程序使用TCP通信

最终目的:在微信小程序内实现对局域网发起TCP通信实现步骤:建立TCP服务 + 小程序发起通信。

Big_YiFeng的博客 5612

Android 12 SplashScreen(闪屏页)适配

Android12闪屏适配

Welcome_Word的博客 6977

合宙ESP32C3实战:MPU6500六轴传感器数据读取与校准全解析

本文详细解析了如何使用合宙ESP32C3开发板读取和校准MPU6500六轴姿态传感器数据。从硬件接线、开发环境搭建到核心代码解析,提供了全面的实战指南,帮助开发者快速掌握传感器配置与数据处理技巧,适用于姿态控制、运动检测等应用场景。

weixin_27066963的博客 406

Android12 SplashScreen默认闪屏页透明化

【代码】Android12 SplashScreen默认闪屏页透明化。

Gestwr博客 1744

基于单片机控制双向可控硅灯光强度设计

*单片机设计介绍,基于单片机控制双向可控硅灯光强度设计。

QQ2193276455的博客 2457

Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形

Hexagon又称六边形,在游戏中是十分常见的基础形状,本文将使用程序化的六边形来制作多个环状六边形叠加的转动动画效果,实践Unity Shader Graph中的常用节点功能。

Giver的博客 1928

Android 12.0 禁用系统app启动动画SplashScreen

frameworks/base/libs/windowmanager/shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java中,注释addStartingWindow中的内容。frameworks/base/libs/windowmanager/shell/src/com/android/wm/shell/startingsurface目录。可以通过一下方法,从framework部分将这个功能默认关闭。

SInolucky的博客 1729

matlab物元可拓模型程序,熵权可拓物元模型

1 概述物元分析方法是中国学者蔡文于20世纪80年代提出的用于解决矛盾问题的技术方法,是研究物元及其变化规律,解决现实世界中不相容问题的有效方法,可应用于生态环境,水资源承载力,农用地分级和土地生态水平等综合评价研究中.本文主要介绍了熵权可拓物元模型的相关概念与该模型的建立过程.2 概念2.1 物元物元分析法的主要思想是把事物用"事物,特征,量值"(分别用N,C,V表示)3个要素以有序三元组的形式...

weixin_33823399的博客 4118

Android 12 SplashScreen API实战:如何自定义启动动画与品牌化闪屏

本文详细解析了Android 12 SplashScreen API的核心功能与实战应用,指导开发者如何通过标准化配置实现品牌化闪屏效果。文章涵盖从基础主题配置到高级动画定制的完整流程,包括动态图标实现、多主题适配等实用技巧,帮助开发者优化应用启动体验并提升品牌一致性。

bush的博客 450

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1901

【python数据挖掘课程】二十八.基于LDA和pyLDAvis的主题挖掘及可视化分析

这是《Python数据挖掘课程》系列文章,前面很多文章都讲解了数据挖掘、机器学习,这篇文章主要讲解LDA和pyLDAvis算法,同时讲解如何读取CSV文本内容进行主题挖掘及可视化展示。文章比较基础,希望对你有所帮助,提供些思路,也是自己教学的内容。推荐大家购买作者新书《Python网络数据爬取及分析从入门到精通(分析篇)》,如果文章中存在错误或不足之处,还请海涵。 目录: 一.显示结果及安装 二.LDA主题挖掘 三.pyLDAvis可视化分析 四.小结

杨秀璋的专栏 1万+

告别卡顿!用RK3588S主板打造三屏异显的智能终端(附Android 12配置心得)

本文详细介绍了如何利用RK3588S主板打造三屏异显的智能终端,包括硬件选型、Android 12配置优化及性能调优。通过实战案例和配置心得,帮助开发者解决多屏显示中的常见问题,提升智能终端的流畅性和稳定性。

weixin_30613433的博客 227

YOLOv11 改进 - Mamba | 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-B 替换骨干,破解全局依赖建模难题,实现高效实时检测

本文介绍Mamba YOLO,为图片物体识别提供了“又快又准”的新方案。传统CNN架构运行快但难以捕捉远距离关联物体,Transformer架构精度高但计算量呈平方级增长,而SSM虽计算量为线性级且能抓全局关联,但用于图片识别时细节定位不准。为此,Mamba YOLO做了三项关键优化:引入ODMamba骨干网络,解决自注意力的二次复杂度问题,且无需预训练;设计ODMamba宏观结构确定最佳阶段比例和缩放大小;采用多分支结构的RG块建模通道维度,解决SSM在序列建模中的不足。在COCO数据集测试中,其小版本推

魔改工程师的博客 859

Android实现闪屏页(附带源码)

Android实现闪屏页(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1126

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android 12 SplashScreen API快速入门

Android 12正式版即将发布。 这次的Android系统变化当中,UI的变化无疑是巨大的。Google在Android 12中采取了一种叫作Material You的界面设计,一切以你为中心,以你的喜好为风格。相信大家一旦上手Android 12之后应该能立刻察觉到这些视觉方面的变化。 另外还有一个非常显著的视觉变化就是,Android 12强制给所有的App都增加了SplashScreen的功能。是的,即使你什么都不做,只要你的App安装到了Android 12手机上,都会自动拥有这个新功能

郭霖的专栏 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

flutter 使用 flutter_native_splash 闪屏页 安卓12+无效问题

如果安卓版本是12或更高版本 必须添加 android_12 参数项flutter_native_splash 官网说明

qq_45048851的博客 1190

unity发布安卓黑屏_untiy3dAndroid和ios启动游戏黑屏界面增加闪屏处理

第一种方式,SDK做,走原生Android流程,百度很多,不介绍了,缺点不方便,优点嘛,没找到。。。。第二种方式,unity自带的开机静态图片,具体如下:1、Androidimage.pngimage.png设置好启动黑屏需要的静态图片,选择对应的缩放模式,出包,点击游戏icon,你会发现,在启动unity自己的activity之前,会有一张闪屏,替代了黑屏界面。这么做的目的嘛,就是为了提升游戏体...

weixin_39664696的博客 977

Android12 新特性及适配指南

从 Android 12 开始,系统会在应用的冷启动和暖启动时,使用新的启动页 SplashScreen,该启动页默认由应用ICON + 应用主题的windowBackground内容构成。新的启动页中的显示元素可完全由由开发者自定义,官方建议开发者:将未适配Android12前前的应用启动页完全移除,并适配Android12新的启动页,从而避免启动页重复、减少加载时间的问题。Android12开始,对于以Android 12 为目标平台的应用,通知栏的自定义试图将不再使用完整的通知栏区域。

我的专栏 4289

Android实现APP欢迎页面(附带源码)

Android实现APP欢迎页面(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 2228

Android与IOS的的兼容总结

前言虽然最近没怎么开发H5端的应用,但是还是想总结下之前开发移动端遇到的一些问题,顺便加深一下自己的印象。1.时间戳转换问题安卓Date.parse(new Date('xxxx...

Crazymryan的博客 854
上一篇: 微信消息语音播报秒实现
下一篇: compose navigation 自定义navtype
lynn8570_blog
博客等级 码龄10年 254粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值