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

Android 12 SplashScreen启动屏

SplashScreen是 Android 12 引入的特性,为了统一启动屏和优化启动,增加了 纯色背景+自适应图标 的启动屏。

一、启动图设计

SplashScreen
启动页,由以下组成:

  1. 图标(矢量图)
  2. 图标背景(颜色)
  3. 图标遮罩层
  4. 窗口背景(颜色)

上图中 1-2 屏是 无图标背景的显示效果;3-4 屏是 有图标背景色的显示效果。

样式尺寸
类型大小说明
应用图标240x240dp内容在160dp圆内
应用图标(无图标背景)288x288dp内容在192dp圆内
品牌图片200x80dp-

图标内容为 2/3 大小,图标遮罩(盖)层为 1/3 大小。

二、使用

1. 这里直接使用 兼容库
dependencies {implementation "androidx.core:core-splashscreen:1.0.0"
}
2. 主题配置启动屏

添加启动屏主题,设置到 <activity />android:theme 属性上。

主题继承 Theme.SplashScreenTheme.SplashScreen.IconBackground,区别是:

  1. Theme.SplashScreen 没有图标背景,图标大小288dp,
  2. Theme.SplashScreen.IconBackground 设置图标背景色,图标240dp
<style name="Theme.App.Splash" parent="Theme.SplashScreen"><item name="windowSplashScreenBackground">#FF0000</item><item name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher_round</item><item name="windowSplashScreenAnimationDuration">280</item><item name="postSplashScreenTheme">@style/Theme.App</item>
</style>

主题属性:

  1. windowSplashScreenBackground 设置背景色或图片
  2. windowSplashScreenAnimatedIcon 设置中间的 图标
  3. windowSplashScreenAnimationDuration 中间 动画矢量图标 的时间
  4. postSplashScreenTheme 设置启动完成后的 主题,即 Activity 实际主题
3. 添加启动屏到Activity

调用 installSplashScreen() 设置 启动屏,然后 监听启动屏结束
splashScreen.setOnExitAnimationListener

注意:

  1. 默认自动 移除 启动屏;
  2. 设置setOnExitAnimationListener时,需要手动 splashScreenViewProvider.remove() 移除 启动屏。
class SplashActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {val splashScreen = installSplashScreen()super.onCreate(savedInstanceState)setContentView(R.layout.activity_splash)splashScreen.setOnExitAnimationListener(object : SplashScreen.OnExitAnimationListener {override fun onSplashScreenExit(splashScreenViewProvider: SplashScreenViewProvider) {splashScreenViewProvider.remove()// 启动屏结束后,跳转页面navToMain()finish()}})}private fun navToMain() {val intent = Intent(this, MainActivity::class.java)startActivity(intent)}
}
4. 保持启动屏显示

通常 启动页 显示完后,可能APP并没有完全初始化。此时 可能需要等待,为了 保持 启动页 显示,可通过 OnPrewDrawListener 配置 false 保持 第一帧,不再绘制。
或直接使用 splashScreen.setKeepOnScreenCondition(),更简单地 保持和取消 启动屏显示。

val isAppInited = falsesplashScreen.setKeepOnScreenCondition {!isAppInited
}

说明:
上述方法,内部也是使用 ViewTreeObserveraddOnPreDrawListenerremoveOnPreDrawListener 方法,
来 保持第一帧的显示 和 继续绘制。

直到 Condition 返回 false 时,才会触发 setOnExitAnimationListener 的回调。

文档

  • 启动画面 | Android
  • 使用自适应图标 | Android
  • NowInAndroid 参考项目的启动屏设计
  • SplashScreen | Android Reference
  • 用一个开屏动画来看动效/开发工作流
http://www.dtcms.com/a/423395.html

相关文章:

  • 游戏开发难还是网站开发难装宽带需要多少钱一个月
  • Unity内嵌浏览器插件:3DWebView,显示不支持的音频/视频格式解决办法
  • 网站开发需求列表dw网页设计作业成品加解析
  • Coze源码分析-资源库-编辑插件-后端源码-IDL/API/应用服务层
  • JuiceSSH+cpolar:手机如何轻松远程连接内网虚拟机?
  • 模式组合应用-代理模式
  • 招聘网站的SEO怎么做建站免费软件
  • 内嵌式模组在物联网设备中如何体现?
  • 【Vue实现跳转页面】功能 - 总结
  • 网站刷流量对网站有影响吗猪八戒网做网站如何付款
  • Linux网络编程05:IO多路转接(万字图文解析)
  • 在 Kubernetes 集群中手动部署开发的应用程序
  • 不联网设备如何精确记时的
  • 网站首页添加代码寄生虫seo教程
  • 黄冈网站推广策略黄浦网站建设
  • 在JavaScript / HTML中,浏览器提示 “Refused to execute inline event handler” 错误
  • 怎样做一个公司网站个人网站做商城
  • 模拟面试 - 第6轮
  • PostgreSQL WAL 日志发展史 - pg8
  • 第4篇 vs2019+QT调用SDK连接海康相机显示图片
  • 高通平台WiFi学习--WLAN Offload技术
  • 微信小程序app.js中每30秒调用一次wx.getLocation
  • 遥感云平台-GEE分块下载与拼接
  • 深圳市建设监理协会网站wordpress后台接口数据
  • UNIX下C语言编程与实践10-UNIX 动态库隐式调用:编译链接配置与路径问题排查
  • 网站虚拟主持人制作建设一个网站需要条件
  • 网站建设中文百北京住房和城乡建设局门户网站
  • uni-app 模板语法修复说明
  • OpenLayers地图交互 -- 章节十八:拖拽旋转和缩放交互详解
  • 6DOF-Euler Angles