LoginSignup
15
6

More than 1 year has passed since last update.

Android 12 DP 3で追加されたSplash screenの挙動を見てみる

Last updated at Posted at 2021-04-30

Android 12 で新たに Splash screen の API が登場したので、どのような挙動で何ができそうか書いていきます。

※ Android 12 はこの記事を書いている 2021/4/30 時点で DP 3 なので、おそらく API 自体にも変更が入るはずです。今すぐに対応が必要というわけではないのですが、今後の動向は気にしておきましょう。

[2021/7/1 追記] AndroidX にバックポートのライブラリがリリースされました

Android 12 では強制的にスプラッシュが表示される

  • DP 3 時点では targetSDK のバージョン関係なく Android 12 でアプリを起動すると Splash screen が表示されるようになっています
  • そのため既存のアプリを Android 12 DP3 で起動させると Splash screen が表示されます

  • DP 3 時点ではこれを無効にする記載がありません
    (見落としているかもなので、見つけた方がいればコメントお願いします :pray: )
  • 既存アプリでスプラッシュの画面を独自に実装している場合は 2 回続けてスプラッシュの画面が表示されることになります

Splash Screen の API でアプリの初期化処理は可能

  • スプラッシュが出ている間に初期化処理を行い、初期化処理が終わればスプラッシュを閉じるという処理は以下のようなコードで可能です。
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)

    // Set up an OnPreDrawListener to the root view.
    val content: View = findViewById(android.R.id.content)
    content.viewTreeObserver.addOnPreDrawListener(
        object : ViewTreeObserver.OnPreDrawListener {
            override fun onPreDraw(): Boolean {
                // Check if the initial data is ready.
                return if (viewModel.isReady) {
                    // The content is ready; start drawing.
                    content.viewTreeObserver.removeOnPreDrawListener(this)
                    true
                } else {
                    // The content is not ready; suspend.
                    false
                }
            }
        }
    )
}
  • ただこの処理は Android 12 だけで使うことになるので、Android 12 までのバージョンでは別途スプラッシュ用の画面を用意することになります (Jetpack でなんとかならないだろうか…)

アイコンと背景色と Splash screen を閉じるときのアニメーションをカスタマイズ可能

  • Splash screen のデフォルトの背景色は android:windowBackground が適用される
    • android:windowBackground を変更するとアプリの他画面の背景色にも影響があるので、Splash screen だけ背景色を変えたい時のために android:windowSplashScreenBackground の属性が追加されている
  • android:windowSplashScreenAnimatedIcon でアニメーション付きのアイコンを設定できたり、(デザインガイドラインでは推奨されていないが)android:windowSplashScreenBrandingImage でスプラッシュの下にも画像を表示させることができる

ドキュメント

15
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6