どうもこんばんわ。Androidにスプラッシュスクリーンっていらねえよなぁ
iOS版もリリースしていてiOSと同じにしてください!みたいなことがない限りいらないと思う。
本題
Android 12からアプリ起動時にスプラッシュスクリーンが無条件で追加される模様。
カメラを起動するときはスプラッシュスクリーン出ないけど、多分あれ真っ暗の背景色を指定してるんだと思う。
なお、独自でスプラッシュスクリーンを実装している場合は二連続でスプラッシュスクリーンが出ます。
環境
なまえ | あたい |
---|
Android | 12 Beta 3 |
Pixel | 3 XL |
ドキュメントです
https://developer.android.com/about/versions/12/features/splash-screen
とりあえず
Android 12をターゲットにします。SDK Managerを起動してAndroid 12のSDKを入れて、app/build.gradle
を開いて、以下を変えます。
無効化する方法はない?
ちらっと見た感じなさそう。
代わりに、
- スプラッシュスクリーンの背景色
- Adaptive Iconの背景色
- Adaptive Iconの前面画像
よく調べてないのであとは頼んだ。
なにもないDrawableを作る
適当に中身のないDrawableを作ればいいと思います。
こっから作成できます
中身は空っぽで
themes.xml
次にsrc/main/res/values/themes.xml
を開いて書き足します
src/main/res/values-night/themes.xml
も書き換えましょう。ダークモード時の挙動です
これで見た感じ今まで通りの挙動になると思います。
Android 6までならバックポートのライブラリで対応できます
これを使うことでAndroid 6(API 23 / マシュマロ)までさかのぼってスプラッシュスクリーンを追加できます。
まずapp/build.gradle
を開き、compileSdk
を31
にする必要があるみたいです。KDoc見れば作れるってGoogle言ってたのにこんな事書いてないぞ!嘘つき!
参考:https://dev.to/tkuenneth/a-peek-inside-jetpack-core-splashscreen-odo
そしたらライブラリを書き足します。
そしたら次はthemes.xml
を開き、スプラッシュスクリーン時のテーマを定義します。
次に、AndroidManifest.xml
を開きapplication
要素のtheme
属性をTheme.OriginalSplashScreen
に変更します。
最後に、MainActivity.kt
を開きinstallSplashScreen()
を呼んだあとにsetContentView()
するように書き換えます。
これでスプラッシュスクリーンがバックポートされました。
終わりに
GmailとかGoogle Driveにはアニメーション付きスプラッシュスクリーンが実装されたそうですが、あれアニメーション見せるのが目的になってない?
アニメーションなんていらんからはよ本題行ってくれってお気持ち。
仕様なのかBetaだからなのかは知りませんが、ランチャー以外からアプリを起動するとスプラッシュスクリーン出ないんだけど?