起動時に2秒間白い画面を表示するAndroidアプリがあります。私の他のアプリはこれをしませんが、これはします。これが修正されることを期待して、スプラッシュスクリーンも実装しました。スプラッシュスクリーンのスリープ時間を増やす必要がありますか?ありがとう。
起動時に2秒間白い画面を表示するAndroidアプリがあります。私の他のアプリはこれをしませんが、これはします。これが修正されることを期待して、スプラッシュスクリーンも実装しました。スプラッシュスクリーンのスリープ時間を増やす必要がありますか?ありがとう。
回答:
AndroidManifest.xmlファイルで開始アクティビティに透明テーマを言及するだけです。
お気に入り:
<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>
その画面をのActivity
代わりにクラスで拡張しますAppCompatActivity
。
お気に入り :
public class SplashScreenActivity extends Activity{
----YOUR CODE GOES HERE----
}
final ActionBar actionBar = getActionBar();
、テーマが半透明の場合、使用するとnullが返されます
これをカスタムスタイルにすると、すべての問題が解決します。ハックな半透明の修正を使用すると、タスクバーとナビゲーションバーが半透明になり、スプラッシュスクリーンまたはメイン画面がスパゲッティのように見えます。
<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>
mipmap/ic_launcher
layer-list
:このことができます <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Background color --> <item android:drawable="@color/white"/> <!-- Logo at the center of the screen --> <item android:drawable="@mipmap/ic_launcher" android:gravity="center"/> </layer-list>
次のように、style.xmlでスタイルを作成します。
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
次のように、AndroidManifestのアクティビティで使用します。
<activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent">
Cyril Mottierによるこの素晴らしい投稿を読んでください:Androidアプリの起動が豪華になりました
あなたTheme
はstyle.xmlであなたをカスタマイズする必要があり、あなたの中でカスタマイズすることを避けるonCreate
、ActionBar.setIcon / / etcとして。
Googleのパフォーマンスに関するヒントのドキュメントもご覧ください。
を使用Trace View
しHierarchy Viewer
て、ビューを表示する時間を確認します。Androidパフォーマンスの最適化 / Androidでのパフォーマンスチューニング
AsyncTask
一部のビューを表示するために使用します。
これはサンプルアプリの私のAppThemeです:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
ご覧のとおり、デフォルトの色android:windowIsTranslucent
を設定してから、を追加してに設定しましたtrue
。
私がAndroid開発者として知っている限り、これは、アプリケーションの開始時に白い画面を非表示にするために設定する必要がある唯一のことです。
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>
だが:
You'r ランチャー活動必見のextandsの活動ではなく、AppCompatActivityそれはデフォルトで来ました!
白い背景はAppthemeからのものです。白い画面の代わりに、アプリケーションのロゴのような便利なものを表示できます。カスタムのテーマを使用して行うことができます。
android:windowBackground=""
属性。属性値は、イメージ、レイヤーリスト、または任意の色です。
<item name="android:windowBackground">@android:color/transparent</item>
以下は、スプラッシュ画面のデザイン方法を提案するリンクです。白/黒の背景を回避するには、スプラッシュバックグラウンドでテーマを定義し、マニフェストファイルでそのテーマをスプラッシュに設定する必要があります。
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
res / drawableフォルダー内のsplash_background.xml
<?xml version=”1.0" encoding=”utf-8"?>
<layer-list xmlns:android=”http://schemas.android.com/apk/res/android">
<item android:drawable=”@color/colorPrimary” />
<item>
<bitmap
android:gravity=”center”
android:src=”@mipmap/ic_launcher” />
</item>
</layer-list>
以下のスタイルを追加
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- Splash Screen theme. -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
以下に示すように、マニフェストでテーマを設定します
<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>
私のプロジェクトの1つでも同じ問題がありました。スプラッシュスクリーンに提供されるテーマにいくつかのパラメーターを追加することで解決しました。
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
理由と解決策は、私が作成したこのブログ投稿で確認できます。それが役に立てば幸い。
マニフェストのテーマを次のように設定することで修正できます
<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を拡張する必要がある場合があります。
それが役に立てば幸い!
次のコードを試してください:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
このコードは私にとっては機能し、すべてのAndroidデバイスで機能します。
そのソリューションは非常に簡単です!
この問題には3つの基本的な理由があります
ソリューション:
解決策1:
Remove the Heavy Task from onCreateView() function and place it some where appropriate place.
解決策2:
Reduce the Thread Sleep time.
解決策3:
Remove the Third party library at app initialize at implement them with some good strategy.
私の場合、私はこの問題を引き起こすSugar ORMを使用しています。
共有して改善する。
これは問題を解決しました:
以下のコードを貼り付けてください:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
そして、AndroidManifest.xmlファイルに変更を加えることを忘れないでください。(テーマ名)
このファイル内のアクティビティの宣言順序に注意してください。
I encountered a similar problem and to overcome it, I implemented the code below in styles, i.e res->values->styles->resource tag
<item name="android:windowDisablePreview">true</item>
Here is the whole code:
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowDisablePreview">true</item>
</style>
onCreate
役割をするのに時間がかかりすぎています。そのアクティビティで単に「setContentView」を試してみて、この遅延がなくなったかどうかを確認してください。