码桶
发现社区成员的开源项目
SplashActivity.kt1.8 KB
package com.dalao.forum
import android.content.Intent
import android.os.Bundle
import android.os.CountDownTimer
import androidx.appcompat.app.AppCompatActivity
import com.dalao.forum.databinding.ActivitySplashBinding
/**
* 开屏广告位:SPLASH_AD_ENABLED 为 false 时直接跳过,不额外等待。
* 需要接入广告 SDK 时,在 showAd() 里加载真实广告素材即可。
*/
class SplashActivity : AppCompatActivity() {
companion object {
private const val SPLASH_AD_ENABLED = false
private const val SPLASH_AD_SECONDS = 3
}
private lateinit var binding: ActivitySplashBinding
private var countDownTimer: CountDownTimer? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySplashBinding.inflate(layoutInflater)
setContentView(binding.root)
if (SPLASH_AD_ENABLED) {
showAdWithCountdown()
} else {
goToMain()
}
}
private fun showAdWithCountdown() {
binding.adBadge.visibility = android.view.View.VISIBLE
binding.adBadge.setOnClickListener { goToMain() }
countDownTimer = object : CountDownTimer(SPLASH_AD_SECONDS * 1000L, 1000L) {
override fun onTick(millisUntilFinished: Long) {
val secondsLeft = (millisUntilFinished / 1000L).toInt() + 1
binding.adBadge.text = getString(R.string.skip_ad, secondsLeft)
}
override fun onFinish() {
goToMain()
}
}.start()
}
private fun goToMain() {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
override fun onDestroy() {
countDownTimer?.cancel()
super.onDestroy()
}
}