你的Android App又需要适配了:Android 12,全新的App启动动画

或者让几何图案拼凑出字母K之后和机器人汇合,象征着Android和Kotlin的强强联合。

注意:

  • 动画Icon的时长上限为1000ms。

  • 图标的进入动画可以定制,但由系统控制,不可以被监听和额外处理。

1.6 延长启动画面

The splash screen is dismissed as soon as your app draws its first frame. If you need to load a small amount of data such as in-app theme settings from a local disk asynchronously, you can use ViewTreeObserver.OnPreDrawListener to suspend the app to draw its first frame.

后台数据的加载难免耗时,启动画面结束了主要内容仍未加载好的话,体验不是太好。能够控制启动画面的持续时时长就好了。

现有的ViewTreeObserver的OnPreDrawListener回调是可以挂起描画的,如果我们在数据准备好之后再放行描画,就可以间接地延长启动画面的显示。

比如Activity初始化2s后才放行描画。

class SplashActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

keepSplashScreenLonger()

}

private fun keepSplashScreenLonger() {

// 监听Content View的描画时机

val content: View = findViewById(android.R.id.content)

content.viewTreeObserver.addOnPreDrawListener(

object : ViewTreeObserver.OnPreDrawListener {

override fun onPreDraw(): Boolean {

// 准备好了描画放行,反之挂起

return if (viewModel.isDataReady()) {

content.viewTreeObserver.removeOnPreDrawListener(this)

true

} else {

false

}

}

}

)

}

}

class MyViewModel(application: Application): AndroidViewModel(application) {

companion object {

const val WORK_DURATION = 2000L

}

private val initTime = SystemClock.uptimeMillis()

fun isDataReady() = SystemClock.uptimeMillis() - initTime > WORK_DURATION

}

看一下效果,发现启动画面的展示时间确实变长了。

二、定制退出效果

====================================================================

当App的第一帧开始描画,Spl

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值