IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Jectpack】 SplashScreen -> 正文阅读

[移动开发]【Jectpack】 SplashScreen

Android12新增开屏页设置,在xml中设置相关属性可定义开屏页的logo、背景颜色、slogn、动画等样式,但只能在Android版本12及以上使用,12以下无效,但使用Jectpack的SplashScreen库可支持12以下开屏样式,最低支持到Android6

一、使用

导入依赖

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

定义主题

<style name="Theme.SplashTheme" parent="Theme.SplashScreen">
        <!--背景色-->
        <item name="windowSplashScreenBackground">@color/purple_500</item>
        <!--设置icon图标  AnimationDrawable 和 AnimatedVectorDrawable 创建的对象,可呈现动画效果-->
        <item name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher_round</item>
        <item name="windowSplashScreenAnimationDuration">@integer/icon_animator_duration</item>
        <item name="postSplashScreenTheme">@style/Theme.AppTheme</item>
    </style>

注意需继承Theme.SplashScreen主题,该主题不属于AppCompat主题,所以对应的Activity不能继承AppCompatActivity.animatedIcon 可以是带动画的矢量图标,但动画效果只在12上起作用,如果使用svg的动画效果则要准备个无动画效果的图供12以下使用;
<item name="android:windowSplashScreenBrandingImage"></item>该属性只能在theme(31)值文件下使用,设置底部图标
在有png图标的情况下,可以用png转svg工具转换成svg文件,然后通过AS自带的Vector Asset Tool和Animated Vector Drawable标签,可以将SVG扩展成矢量图动画文件

配置运行

将compileSdk指定31,如果编译报错,检查是否配置了android:exported=“true”,至此就可以运行看到设置的效果

二、进阶

控制画面展示时长

开屏页的时长是不固定的,所以动画的显示可能没显示完就退出了,可以通过获取splashscreen实例来控制展示时间和退出的时机

val splashScreen=installSplashScreen()
splashScreen.setKeepVisibleCondition(SplashScreen.KeepOnScreenCondition { !isLoading })

isLoading代表是否可以退出了

设置退出动画

 splashScreen.setOnExitAnimationListener {
                splashScreenViewProvider->
            val onExit={splashScreenViewProvider.remove()}
            showSplashExitAnimator(splashScreenViewProvider.view,onExit)
            showSplashIconExitAnimator(splashScreenViewProvider.iconView,onExit)
        }

isLoading后会执行退出动画,退出动画执行后需手动调用remove方法将闪屏布局移除,如果此时执行了跳转页面的动作则可能看不到动画的执行效果,会执行页面跳转的动画。
某些时候开屏动画已经执行完但布局还未完成绘制,会停留在开屏页较长时间,此时可不去执行退场动画,让用户绘制完立即进入数据页面,可在执行退场动画前利用 val animationDuration = splashScreenViewProvider.iconAnimationDurationMillisval animationStart = splashScreenViewProvider.iconAnimationStartMillis计算剩余时间来决定是否执行退场动画,

val remainingDuration = (
        animationDuration - (SystemClock.uptimeMillis() - animationStart)
    ).coerceAtLeast(0L)

三、实践

GitHub

四、参考

官方Jectpack splashScreen
Jetpack新成员SplashScreen:打造全新的App启动画面

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:26:00  更:2021-11-29 16:26:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:21:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码