IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Ecran blanc au lancement de l'application


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 40
    Par défaut Ecran blanc au lancement de l'application
    Bonjour à tous,
    Malgré mes recherches, je ne trouve pas de piste à ma question alors que cela me semble tout bête au départ.

    Mon problème est simple : au lancement de mon application, je voudrais ne pas voir l'écran vide du thème par défaut parce que je trouve que cela ne fait pas "propre".

    Je veux dire lorsque mon application se lance, pendant quelques millièmes de secondes, je vois apparaitre un écran blanc avec titre bleu puis apparait ma première activité qui est justement ma page d'attente de chargement "designé". Si je met une temporisation sur cette première activité, je vois quand même l'écran blanc, si je ne met pas de pause, je ne vois même pas ma première activité (donc elle est très rapide à charger) mais je vois toujours cet écran blanc.
    Vous l'aurez compris, ce fameux écran blanc est du au thème par défaut de l'application (que je n'utilise que peu finalement).

    Donc que dois je faire ? Créer mon propre thème qui chargerait une visu sans titre et avec un fond correspondant ?
    Ne puis je pas faire sauter cette étape de lancement ? a savoir pourquoi cela ne charge t il pas ma première activité comme premier rendu ?!

    Lorsque j'étais sous éclypse, je n'avais pas ce soucis, il y a donc quelque chose que je ne comprend pas sous android studio ... si une bonne âme vieux bien m'éclairer. Merci,+

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Sans code difficile de savoir.
    Je n'ai jamais vu d'écran "blanc" sauf quand une activité avait du mal à démarrer (ce qui n'est pas bon).

    Quelque chose me dit que tu fais un traitement long pendant la création de l'activité empêchant le dessin de celle-ci (et donc l'écran blanc)... le code aiderait (au moins un synopsis)

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    public class Chargement extends AppCompatActivity {
        private String wrk_donnees = "";
        private TextView wrk_tv;
        private ImageView mLoading;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_chargement); // Affichage de l'écran
            getSupportActionBar().hide(); // Virer le titre
     
            mLoading = (ImageView) findViewById(R.id.image_loading);
            Animation logoMoveAnimation = AnimationUtils.loadAnimation(Chargement.this, R.anim.loading);
            mLoading.startAnimation(logoMoveAnimation);
            wrk_donnees = Recupdonnees();
            // A VIRER au final
            wrk_tv = (TextView) findViewById(R.id.wrk_tv);
            if(wrk_donnees == "") wrk_tv.setText("Données vides");
            else wrk_tv.setText(wrk_donnees);
     
     
            if(wrk_donnees == "")
            {
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Intent ActiviteConnexion = new Intent(Chargement.this, Connexion.class);
                        //ActiviteConnexion.putExtra(AGE, "31");
                        startActivity(ActiviteConnexion);
                   }
                }, 1000);
            }
        }
     
        public String Recupdonnees()
        { // lecture des données enregistrées en local
            String wrk_retour = "";
            FileInputStream in;
            try {
                in = openFileInput("MonCache");
                InputStreamReader inputStreamReader = new InputStreamReader(in);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                StringBuilder sb = new StringBuilder();
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    sb.append(line);
                }
                wrk_retour = sb.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return wrk_retour;
        }
    }
    Voici donc le code même si je retire le "handler" de pause j'ai cet écran blanc (vraiment très rapidement) et je ne vois pas du tout cette activité dans ce cas.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Pourquoi retarder ton lancement d'activité ?
    Si ton but est de faire un splashscreen c'est pas comme ça que l'on fait.

    Imposer un temps d'attente arbitraire est une mauvaise pratique , Google préconise d'ailleurs de ne pas utiliser de splashscreen.

    Ce qu'il est possible de faire c'est de personnaliser cet écran blanc que tu vois au départ :

    1- Créer un theme spécial de chargement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <style name="splashTheme">
        <item name="android:windowBackground">@drawable/splash_screen</item>
    </style>
    2- Associer ce thème à ton activity principale dans le manifest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:theme="@style/splashTheme" >
    3- Change le theme de l'activity principal une fois chargée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme); //On rétablis le theme "normal" avant onCreate
        super.onCreate(savedInstanceState);
    }
    Avec cette solution tu n'as plus un écran blanc moche , mais un écran personalisé. Il ne s'affiche pas plus longtemps que ce qu'il devrait.
    Si ton activité doit ensuite charger des données (réseau, cache, etc) il faut gérer le temps d'attente via une progressbar ou équivalent.

    Un article sur le sujet : https://plus.google.com/+AndroidDeve...ts/Z1Wwainpjhd qui explique le pourquoi du comment cet écran blanc apparaît

    Un bon exemple de ce comportement est l'application youtube :
    Nom : youtube_splash.gif
Affichages : 3238
Taille : 354,0 Ko
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 40
    Par défaut
    C'est parfait merci.

    PS : en réalité, le temps d'attente, c'était juste pour voir si j'avais pas de bug dans mon écran parce que sinon je ne le voyais. Comme je disais, je suis entrain de nettoyer tout ce qui est "cochon" ... je vais donc le retirer

  6. #6
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    L'écran blanc ça semble normal car il le fait même quand il n'y a pratiquement pas de code.

    Le splash screen selon Google doit être très court et il ne faut pas l'afficher inutilement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecran blanc au lancement d'un .jar
    Par Caypamoi dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 03/12/2013, 09h16
  2. [Exécutable]lancement d'une application
    Par jesus144 dans le forum Général Java
    Réponses: 9
    Dernier message: 08/06/2005, 10h08
  3. [Plugin][MyEclipse]Lancement d'une application J2EE
    Par ujoodha dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/04/2005, 15h48
  4. Détecter le lancement d'une application
    Par Neilos dans le forum Windows
    Réponses: 8
    Dernier message: 22/11/2004, 12h32
  5. Lancement d'une application en local (!)
    Par Fifoun dans le forum MFC
    Réponses: 5
    Dernier message: 12/06/2004, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo