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 :

Afficher/masquer une image


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut Afficher/masquer une image
    Bonjour,

    Je suis débutant sous Android et j'essaie de faire apparaitre une image quelques secondes après le lancement de l'appli.
    Mon fichier xml contient ceci:
    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
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:context=".MainActivity" >
     
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="Toolbar"
            android:src="@drawable/toolbar"
            android:visibility="visible" />
     <ImageView
                 android:id="@+id/imageView2"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:contentDescription="bulle"
                 android:src="@drawable/testbulle"
                 android:visibility="invisible" />
    </LinearLayout>
    Pour afficher la seconde image, j'ai ajouté ce code dans mon fichier java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @Override
    	protected void onStart(){
    		super.onStart();
    		try {
    			Thread.sleep(5000);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		ImageView iv=(ImageView)findViewById(R.id.imageView2);
    		iv.setVisibility(ImageView.VISIBLE);
    	}
    Le but étant de faire une pause de 5s après lancement et d'afficher la 2nde image.
    Le problème est que la première image reste invisible tant que la 2nde n'est pas affiché. J'ai essayé de déplacer ce code dans onResume(), mais c'est pareil.
    Quelqu'un a-t-il une piste?

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 281
    Par défaut
    Utilise les AsynchTask :

    - Méthode Onpreexecute () :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img1.setVisibility(View.VISIBLE)
    img2.setVisibility(View.INVISIBLE)
    - Méthode DoinBackground()

    Un sleep de 5s

    - Méthode OnPostExecute()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img2.setVisibility(View.VISIBLE)

  3. #3
    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
    View.GONE aussi

  4. #4
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Citation Envoyé par hotcryx Voir le message
    View.GONE aussi
    Oui, j'avais essayé GONE et INVISIBLE

    Je ne connais pas les AsynchTask. Je vais chercher de ce côté, puis je reviendrai vers vous si j'ai des problèmes.
    Merci pour vos réponses

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Le problème dans ton code, c'est que tu "gèles" ton application pendant 5 secondes. Pendant cette période, ton application est considérée comme plantée.
    Pour effectuer des changement dans la hiérarchie des vues (ajouter des éléments, le afficher, les faire disparaitres, ...) il te faut utiliser un Handler ou un AsyncTask.

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    AsyncTask *
    Avec la bonne orthographe, ça sera plus facile

    Sinon ... au vu de ton code et du XML, je devine ceci :
    -un seul écran
    -une image au-dessus
    -une image en-dessous
    -tu désirs que la première image fasse quelques secondes, puis disparaisse

    Ce que tu veux faire se nomme un "splashscreen" (avec ce mot, tu devrais trouver beaucoup de ressources sur le net).

    Tu as la bonne idée (et le bon algo), mais pas la bonne démarche. Ton problème est que ton UI s'affiche "tout ensemble", et que tu gèles celle-ci pendant X secondes. Ainsi, le tout est gelé.
    Changements à faire : laisser le tout s'affiché, avec un timer dans un thread à côté. Celui-ci, arrivé au bout, change l'UI en faisant ce que tu veux (ici, je pense soit à une animation de translation, soit à des changements d'alpha).


    EDIT : et paf
    Le temps que je rédige, je me suis fait grillé.

    Je vais donner des petits détails en plus. Les AsyncTask (Asynchronous Task) sont des classes d'aide. Elles reprennent simplement l'idée des thread avec tout ce qu'il y a avec, en facilitant les traitements de fond et les impacts dans le thread graphique.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Ce que tu veux faire se nomme un "splashscreen" (avec ce mot, tu devrais trouver beaucoup de ressources sur le net).
    Pas du tout
    Je fais des "essais" pour reproduire le comportement d'une appli existante sur une autre plateforme.
    Le but c'est qu'une image en particulier ne s'affiche (définitivement) sur un emplacement de l'écran qu'après quelques secondes.
    J'y suis arrivé grâce à un tutoriel Android.
    Merci pour votre aide à tous.

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ah ... zut.
    Ca y ressemblait pourtant, my bad ^^'
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

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

Discussions similaires

  1. Afficher/masquer une image en Delphi 7
    Par sic_88 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/03/2009, 15h17
  2. Afficher/Masquer une div
    Par philbona dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 08/02/2007, 23h09
  3. Afficher / Remplacer une image par une autre
    Par dolf13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2007, 19h52
  4. n'affiche pas une image arriere plan definis dans une CSS
    Par mikebranque dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 30/06/2006, 15h54
  5. [Form] Afficher/Masquer une zone de texte
    Par SpyesX dans le forum IHM
    Réponses: 14
    Dernier message: 01/12/2005, 01h13

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