起動時に白い画面を 2 秒間表示する Android アプリがあります。私の他のアプリはこれを行いませんが、これは行います。これを修正することを期待して、スプラッシュスクリーンも実装しました。スプラッシュ スクリーンのスリープ時間を増やす必要がありますか? ありがとう。
18 に答える
これをカスタム スタイルに入れると、すべての問題が解決します。ハックな半透明修正を使用すると、タスク バーとナビゲーション バーが半透明になり、スプラッシュ スクリーンまたはメイン画面がスパゲッティのように見えます。
<item name="android:windowDisablePreview">true</item>
あなたのチューブのように..最初は白い画面ではなくアイコン画面が表示されます。2 秒後にホーム画面が表示されます。
最初に res/drawable に XML ドローアブルを作成します。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
次に、これをテーマのスプラッシュ アクティビティの背景として設定します。styles.xml ファイルに移動し、スプラッシュ アクティビティ用の新しいテーマを追加します。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
新しい SplashTheme で、ウィンドウの背景属性を XML ドローアブルに設定します。これを AndroidManifest.xml でスプラッシュ アクティビティのテーマとして構成します。
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
このリンクはあなたが望むものを提供します。ステップバイステップの手順。 https://www.bignerdranch.com/blog/splash-screens-the-right-way/
アップデート:
は、次のようにさらにシンプルにすることができます (タグlayer-list
とは異なり、中央のロゴのベクター型ドローアブルも受け入れます)。<bitmap>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Background color -->
<item android:drawable="@color/gray"/>
<!-- Logo at the center of the screen -->
<item
android:drawable="@mipmap/ic_launcher"
android:gravity="center"/>
</layer-list>
Cyril Mottier による次の素晴らしい投稿をお読みください: Android アプリの起動がゴージャスに
Theme
style.xml でカスタマイズする必要がありonCreate
、ActionBar.setIcon/setTitle/etc でカスタマイズすることは避けてください。
Google による パフォーマンスのヒントに関するドキュメントも参照してください。
Trace View
とを使用しHierarchy Viewer
て、ビューを表示する時間を確認します: Android のパフォーマンスの最適化/ Android でのパフォーマンスの調整
AsyncTask
一部のビューを表示するために使用します。
白い背景は Apptheme から来ています。白い画面の代わりに、アプリケーションのロゴなどの便利なものを表示できます。これは、カスタム テーマを使用して行うことができます。アプリのテーマに追加するだけです。
android:windowBackground=""
属性。属性値は、画像、階層化されたリスト、または任意の色です。
両方のプロパティは、それらのいずれかを使用して機能します。
<style name="AppBaseThemeDark" parent="@style/Theme.AppCompat">
<!--your other properties -->
<!--<item name="android:windowDisablePreview">true</item>-->
<item name="android:windowBackground">@null</item>
<!--your other properties -->
</style>
user543の答えは完璧です
<activity
android:name="first Activity Name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
しかし:
LAUNCHER Activityは、デフォルトでAppCompatActivityではなくActivityを拡張する必要があります。
マニフェストのテーマを次のように設定することで修正できます
<activity
android:name=".MySplashActivityName"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
その後、java.lang.IllegalStateException: を取得している場合は
、このアクティビティで Theme.AppCompat テーマ (または子孫) を使用する必要があります。
その場合、MySplashActivityでAppCompatActivityの代わりにActivityを拡張する必要がある場合があります。
それが役に立てば幸い!
Instant Run android studio 設定を無効にする必要があります。
File>Settings>Build,Execution,Deployment>Instant Run そこに表示されているすべてのオプションのチェックを外します。
注: Instant Runによるホワイト スクリーンの問題は、デバッグ ビルドのみで発生します。この問題は、リリース ビルドでは発生しません。