You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Android 12启动页(Splash Screen)在动画结束后立即关闭?

解决方案:手动控制启动页关闭时机

要让启动页在800ms图标动画结束后立即关闭,你可以通过SplashScreen的退出动画监听机制手动触发关闭操作,具体实现如下:

  1. 调用installSplashScreen()后保留实例引用
  2. 设置退出动画监听器,在动画结束时直接移除启动页视图

修改后的onCreate()代码示例:

override fun onCreate(savedInstanceState: Bundle?) {
    val splashScreen = installSplashScreen()
    
    // 监听启动页退出动画完成事件,立即关闭启动页
    splashScreen.setOnExitAnimationListener { splashScreenView ->
        splashScreenView.remove()
    }

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // ... 其他初始化逻辑
}

如果需要完全匹配你设置的800ms时长,也可以通过延迟任务直接触发关闭:

override fun onCreate(savedInstanceState: Bundle?) {
    val splashScreen = installSplashScreen()
    val splashView = splashScreen.view

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // 延迟800ms后关闭启动页
    Handler(Looper.getMainLooper()).postDelayed({
        splashView?.remove()
    }, 800)
}
关于延迟的原因与时长稳定性
  • 延迟的核心原因:默认情况下,Android SplashScreen会自动保持显示,直到你的Activity完成核心初始化流程(包括setContentView执行、布局绘制,以及你在onCreate中编写的各类初始化逻辑)。如果你的onCreate中存在耗时操作(比如第三方SDK初始化、本地数据加载、复杂布局渲染等),就会导致启动页显示时间超过你设置的动画时长。此外,应用首次启动时系统需要完成Dex优化、资源预加载等额外工作,也会拉长启动耗时。
  • 时长是否固定:这个延迟不是固定值。它取决于应用初始化逻辑的耗时、设备硬件性能(内存、CPU负载)、系统后台资源占用情况等因素。如果你的初始化逻辑稳定且设备资源充足,延迟会相对可控;但一旦出现耗时操作或系统资源紧张,延迟时长就会明显增加。

内容的提问来源于stack exchange,提问作者Raunak Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:40:28