web-dev-qa-db-fra.com

Comment réparer un écran blanc sur l'application Démarrer?

J'ai une application Android qui affiche un écran blanc pendant 2 secondes au démarrage. Mes autres applications ne le font pas, mais celle-ci le fait. J'ai également mis en place un écran de démarrage avec l'espoir de résoudre ce problème. Devrais-je augmenter le temps de sommeil de mon écran de démarrage? Merci.

96
Anonymous

Il suffit de mentionner le thème transparent à l’activité de démarrage dans le fichier AndroidManifest.xml

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 étendre cet écran avec Activity classe à la place de AppCompatActivity.

comme :

public class SplashScreenActivity extends Activity{

  ----YOUR CODE GOES HERE----
}
96
user543

Mettez ceci dans un style personnalisé et cela résoudra tous les problèmes. L'utilisation du correctif hacky translucent rendra la barre de tâches et la barre de navigation translucides et donnera à l'écran de démarrage ou à l'écran principal l'aspect de spaghettis.

<item name="Android:windowDisablePreview">true</item>

149
ireq

Créez un style dans votre fichier 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 utilisez-le avec votre activité dans AndroidManifest en tant que:

<activity Android:name=".ActivitySplash" Android:theme="@style/Theme.Transparent">
64
Tarun

 enter image description here

Comme vous tube .. initialement, ils affichent l’icône de l’icône au lieu de l’écran blanc. Et après 2 secondes montre l'écran d'accueil.

commencez par créer un fichier XML pouvant être dessiné 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>

Vous allez ensuite définir cela comme arrière-plan de votre activité Splash dans le thème. Accédez à votre fichier styles.xml et ajoutez 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 d’arrière-plan de la fenêtre sur votre dessin XML. Configurez-le en tant que thème de votre activité splash dans votre fichier 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 pas à pas . https://www.bignerdranch.com/blog/splash-screens-the-right-way/

METTRE À JOUR:

Le layer-list peut être encore plus simple comme ceci (qui accepte également les dessins vectoriels pour le logo centré, contrairement à la balise <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>
63
Abhi

Vous devriez lire cet article de Cyril Mottier: Lancement d'une application Android magnifique

Vous devez personnaliser votre Theme dans style.xml et éviter de le personnaliser dans votre onCreate en tant que ActionBar.setIcon/setTitle/etc. 

Voir aussi la documentation sur Performance Tips de Google. 

Utilisez Trace View et Hierarchy Viewer pour afficher l'heure d'affichage de vos vues: Optimisation des performances Android / Optimisation des performances sous Android

Utilisez AsyncTask pour afficher certaines vues.

7
Fllo

Ceci est mon AppTheme 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 constater, j’ai les couleurs par défaut, puis j’ai ajouté le Android:windowIsTranslucent et l’ai défini sur true.

Pour autant que je sache en tant que développeur Android, il s'agit de la seule chose à définir pour masquer l'écran blanc au démarrage de l'application. 

5
luiscosta

Les deux propriétés fonctionnent utilisez l'une d'elles.

    <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>
3
Sohail Zahid

Le fond blanc provient de l'Apptheme.Vous pouvez afficher quelque chose d'utile, comme le logo de votre application au lieu de l'écran blanc. Il peut être créé à l'aide d'un thème personnalisé. 

Android:windowBackground=""

attribut . La valeur de l'attribut peut être une image, une liste de couches ou n'importe quelle couleur. 

3
Rajesh.k

Le user543 answer 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:

Vous êtes LAUNCHER L'activité doit étendre la Activité, et non pas AppCompatActivity tel qu'il était par défaut!

3
Igor Fridman

Le fond blanc est dû au fait que Android commence pendant le chargement de l'application en mémoire. Il peut être évité si vous ajoutez simplement ces 2 lignes de code sous SplashTheme.

<item name="Android:windowDisablePreview">true</item>
<item name="Android:windowIsTranslucent">true</item>
1
Farid Haq

Il peut être corrigé en définissant le thème dans votre manifeste comme suit: 

<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 ensuite si vous obtenez
Java.lang.IllegalStateException: vous devez utiliser un thème Theme.AppCompat (ou un descendant) avec cette activité.
alors vous devrez peut-être étendre Activity au lieu de AppCompatActivity dans votre MySplashActivity.

J'espère que ça aide!

1
Mr. Rabbit

j'ai également eu le même problème dans l'un de mes projets. 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. J'espère que ça aide.

1
divaPrajapati09

Sa solution est très simple!

Il y a Trois Raisons fondamentales de ce problème

  1. Vous faites tâche lourde/longue/complexe dans la fonction onCreateVeiw.
  2. Si vous utilisez Thread. Alors Durée de veille du fil peut être très grand.
  3. Si vous utilisez une bibliothèque tierce. Quel est le temps initialiser à l'application démarrage cela peut conduire à ce problème.

Solutions:

Solution 1:

  Remove the Heavy Task from onCreateView() function and place it some where appropriate place.

Solution 2:

  Reduce the Thread Sleep time.

Solution 3:

  Remove the Third party library at app initialize at implement them with some good strategy.

Dans mon cas, j'utilise Sugar ORM qui pose ce problème.

Partager pour améliorer.

0
Sheharyar Ejaz

Ci-dessous le lien qui suggère comment concevoir un écran de démarrage. Pour éviter un arrière-plan blanc/noir, nous devons définir un thème avec splash background et définir ce thème pour qu'il éclabousse dans un fichier manifeste.

https://Android.jlelse.eu/right-way-to-create-splash-screen-on-Android-e7f1709ba154

splash_background.xml dans le dossier res/drawable

<?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 les styles ci-dessous

<!-- 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 Manifest, définissez le thème comme indiqué 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>
0
Rocky

vous devez désactiver Instant Run Android Studio Settings.

Fichier> Paramètres> Construire, Exécution, Déploiement> Exécution instantanée - Vérifier toutes les options indiquées ici.

Remarque: Problème d'écran blanc en raison de Exécution instantanée concerne uniquement les versions Debug.

0
Mina Farid

Essayez le code suivant:

<!-- 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>

Ce code fonctionne pour moi et fonctionnera sur tous les appareils Android.

0
Hits sapra