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.

94
demandé sur buczek 2013-12-12 18:52:30

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----
}
93
répondu user543 2018-07-25 10:29:20

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>

138
répondu ireq 2016-01-23 06:15:56

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">
63
répondu Tarun 2016-05-27 06:56:00

enter image description here

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>
56
répondu Abhi 2017-11-08 02:00:14

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.

7
répondu Fllo 2013-12-12 15:27:45

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.

5
répondu luiscosta 2016-07-06 17:09:07

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>
3
répondu Sohail Zahid 2016-08-18 09:09:06

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!

3
répondu Igor Fridman 2017-05-23 11:47:18

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.

2
répondu Rajesh.k 2016-11-01 10:08:49

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!

1
répondu Mr. Rabbit 2016-06-30 13:21:56

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.

0
répondu Mina Farid 2017-08-23 10:05:49

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>
0
répondu Rocky 2018-02-06 10:48:16

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.

0
répondu divaPrajapati09 2018-06-24 09:35:58