android12からのSplashScreenについてメモ&削除方法追記
android12からのSplashScreenとは
androidには今までちゃんとしたsplashが存在しなかったので
android12で遂に実装しましたよ!!というもの。
基本的にthemeとかdrawbleで設定するだけなので
複雑なsplashを作ることはできなそう。
なので複雑なsplashを使いたい人は
SplashScreen+専用のActivityなどの混合で対応する必要がありそう。
それならSplashScreen消したほうがいいんじゃない???
とは思ったが消すことができない
(消す方法を発見しました!!)
&今まで出てこなかったタイミングで勝手に出てくる
ようになってしまったみたいです。
今まで出てこなかったタイミングというのは
ウォームスタートというタイミングみたいです。
詳しくはこちら
なので変に消すと逆に変な描画になってしまうので
両方表示されても違和感のないぐらいのデザインに落とし込むのが
ベターなのかなぁという印象です。
android12以前でもSplashScreenを使いたい
こちら
を使うことで
android12以前でも同じような挙動のsplashを作成することができるようです。
SplashScreenを消す
ベースとなるActivityのテーマに
<item name="android:windowIsTranslucent">true</item>
こちらを追記することで
SplashScreenを透明にすることで実質消すことができる。
あまりよくわかっていないが
この対応をすることでアプリが応答していないように見える
(透明にしてしまっているのでウォームスタートとかで変な表示になるのかも?)
らしいので、その場合はこのようにするといいらしい
private void setupOnPreDrawListenerToRootView() {
View mViewContent = findViewById(android.R.id.content);
mViewContent.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
Log.v("onPreDraw","onPreDraw called");
if (isAppInitialized) {
mViewContent.getViewTreeObserver().removeOnPreDrawListener(this);
startActivity(new Intent(this, MainActivity.class));
return true;
} else {
// The content is not ready; suspend.
return false;
}
}
});
}
参考記事
Author And Source
この問題について(android12からのSplashScreenについてメモ&削除方法追記), 我々は、より多くの情報をここで見つけました https://zenn.dev/apple_nktn/articles/cadf6e7d088566著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol