Comment réparer écran blanc sur le démarrage de l'application?
j'ai une application android qui affiche un écran blanc pendant 2 secondes au démarrage. Mes autres applications ne font pas ça, mais celle-ci si. J'ai également mis en place un pare-éclaboussure dans l'espoir de remédier à cette situation. Dois-je augmenter mon écran de démarrage temps de sommeil? Grâce.
13 réponses
il suffit de mentionner le thème transparent à l'activité de départ dans L'AndroidManifest.XML fichier.
Comme:
<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>
et de prolonger cet écran avec Activity
classe à la place de AppCompatActivity
.
comme :
public class SplashScreenActivity extends Activity{
----YOUR CODE GOES HERE----
}
Mettre cela dans un style personnalisé et il résout tous les problèmes. L'utilisation de la solution translucide hacky rendra votre barre des tâches et la barre de navigation translucide et faire l'écran d'éclaboussure ou écran principal ressembler à des spaghettis.
<item name="android:windowDisablePreview">true</item>
faites un style dans votre style.xml comme suit:
<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>
et l'utiliser avec votre activité dans AndroidManifest as:
<activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent">
comme ton tube.. au début ils montrent l'écran d'icône au lieu de l'écran blanc. Et après 2 secondes montre l'écran d'accueil.
créer d'abord un drawable XML dans res/drawable.
<?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>
ensuite, vous définirez cela comme le contexte de votre activité splash dans le thème. Naviguez vers vos styles.fichier xml et Ajouter un nouveau thème pour votre activité splash
<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>
dans votre nouveau SplashTheme, définissez l'attribut window background à votre format de dessin XML. Configurez ceci comme le thème de votre activité splash dans votre 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>
Ce lien donne ce que vous voulez. procédure étape par étape. https://www.bignerdranch.com/blog/splash-screens-the-right-way/
mise à jour:
le layer-list
peut être pair plus simple comme ceci (qui accepte également des tirables vectoriels pour le logo centré, à la différence de l'étiquette <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>
vous devriez lire ce grand post de Cyril Mottier: Android App launching made gorgeous
vous devez personnaliser votre Theme
dans le style.xml et éviter de personnaliser dans votre onCreate
comme ActionBar.setIcon / setTitle / etc.
voir aussi la Documentation sur conseils de Performance par Google.
utilisez Trace View
et Hierarchy Viewer
pour voir l'heure d'affichage votre point de Vue: Android Optimisation de la Performance / optimisation des Performances Sur Android
utilisez AsyncTask
pour afficher certaines vues.
C'est mon Appthème sur un exemple d'application:
<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>
Comme vous pouvez le voir, j'ai les couleurs par défaut et puis j'ai ajouté le android:windowIsTranslucent
et réglez true
.
pour autant Que je sais qu'un Développeur Android, c'est la seule chose que vous devez définir pour cacher l'écran blanc au démarrage de l'application.
les deux propriétés fonctionnent utilisez l'un d'eux.
<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>
Le user543 réponse est parfait
<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>
, Mais:
you'r LANCEUR d'Activité doit extands Activité , pas AppCompatActivity comme c'est venu par défaut!
le fond blanc vient de L'Appthème.Vous pouvez montrer quelque chose d'utile comme votre logo d'application au lieu de l'écran blanc.il peut être fait en utilisant le thème personnalisé.dans votre thème app il suffit d'ajouter
android:windowBackground=""
attribut. La valeur de l'attribut peut être une image ou une liste stratifiée ou n'importe quelle couleur.
il peut être fixé en mettant le thème dans votre manifeste comme
<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>
et après cela si vous recevez
java.lang.IllegalStateException: vous devez utiliser un thème.Thème AppCompat (ou descendant) avec cette activité.
ensuite, vous pouvez avoir besoin de prolonger activité au lieu de Appcompatacity dans votre MySplashActivity.
Espère que cela aide!
vous devez désactiver les paramètres D'exécution instantanée android studio.
Fichier>Paramètres>Build,Execution, Deployment>Instant Run décochez toutes les options affichées.
Note: problème d'écran blanc dû à course instantanée n'est que pour Debug builds,ce problème n'apparaîtra pas sur release builds.
ci-dessous est le lien qui suggère comment concevoir un écran de projection. Pour éviter le fond blanc / noir nous devons définir un thème avec le fond splash et mettre ce thème à splash dans le fichier manifest.
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
splash_background.xml à l'intérieur de res/drawable dossier
<?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>
Ajouter ci-dessous styles
<!-- 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>
dans la série de manifestes thème comme montré ci-dessous
<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>
j'ai également eu le même problème dans un de mes projet. Je l'ai résolu en ajoutant quelques paramètres suivants dans le thème fourni à l'écran de démarrage.
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
vous pouvez trouver la raison et la résolution dans ce billet de blog écrit par moi. Espérons que cela aide.