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 :

Affichage d'images dans une boucle


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut Affichage d'images dans une boucle
    Bonjour,
    Je suis confronté au problème suivant:
    Je souhaite afficher une succession d'images dans le même ImageView. Un traitement (doSomething) est faire sur la Bitmap avant chaque affichage.
    Le problème est que seule la dernière image en fin de boucle est affichée.
    Existe t-il un moyen de forcer l'affichage à chaque itération ? Je joins un extrait du code en java.
    L'application est lancée sur l'émulateur Android sous Eclipse
    Merci d'avance

    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
     
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    ImageView mIV;
    sdcard = Environment.getExternalStorageDirectory();
    files = sdcard.listFiles();
    for (int y=0; y<files.length; y++)
    {
       try {
            File file = files[y];
    	String dbfile1 =sdcard.getAbsolutePath()+File.separator+file.getName();
    	if (file.isFile()) 
    	{	
    	    int dotposition= file.getName().lastIndexOf(".");
    	    String ext = file.getName().substring(dotposition+1,
                                           (int)file.getName().length);
    	    if ((ext.equalsIgnoreCase("jpg")) || (ext.equalsIgnoreCase("jpeg")) || (ext.equalsIgnoreCase("png")))
    	    {
    		   Bitmap b1 = BitmapFactory.decodeFile(dbfile1);
                       mFaceBitmap = b1.copy(Bitmap.Config.RGB_565, true); 
    		   newFaceBitmap = android.graphics.Bitmap.createScaledBitmap
                                         (mFaceBitmap, 200, 200, true);
    		   b1.recycle();
                       doSomething(newFaceBitmap);
    		   mIV.setImageBitmap(newFaceBitmap);
                       mIV.invalidate();
                }
            }
            catch(Exception e) 
           {
               System.out.println("error ....");
            }
        }

  2. #2
    Membre éclairé
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2012
    Messages : 72
    Par défaut C'est normal!
    Tu ne mets pas de pause entre les images, donc les images défilent mais tellement vite que tu ne vois que la dernière...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    cheikdav,
    L'ajout d'un Thread.sleep avant l'affichage ne change rien. Qu'entends-tu par pause ?

  4. #4
    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
    Bah zut, apparemment l'autre discussion était un doublon (je vais la merger sous peu)
    En attendant voici ma réponse à l'autre (je me doutais bien du probleme finalement ^^)


    Ca n'existe pas "File[] listFiles(FileFilter filter)" sur android ?
    Parcequ'avec FileFilter c'est plus simple (en tout cas plus propre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    File[] allJpgs = directory.listFiles(new FileFilter() {
           @Override
           public boolean accept(File pathname) {
               String fname = pathname.getName();
               int idx = fname.lastIndexOf('.');
               String ext = (idx == -1) ? "" : fname.susbtring(idx+1);
               return ext.equalsIgnoreCase("jpg") || ex.equalsIgnoreCase(".jpeg") || ex.equalsIgnoreCase(".png");
           }
        });

    Sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int y=0; y<files.length; y++)
    {
       try {
            File file = files[y];
    C'est du "vieux" java ... maintenant ca s'écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (File file : files) {
      try {
    Ensuite, tu met à jour l'ImageView dans la boucle... mais tant que tu n'es pas sorti de la fonction il n'y aura pas de "draw", donc il faut mettre à jour les images de manière asynchrone:
    Stocker le File[] et l'index actuel
    Utiliser TimerTask

    D'autre part, je ne suis pas sur qu'il y ai beaucoup d'images à la racine de la sdcard
    Pourquoi ne pas utiliser le manager de media intégré ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    Merci nicroman,
    Désolé pour le doublon qui n'était qu'une erreur de manipulation : le message avait été envoyé avant d'avoir fini d'être tapé.
    Je regarde du coté de TimerTask.
    Quant au nombre d'images, il peut y en avoir plusieurs centaines ...

  6. #6
    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
    Oui ... sans doute

    File n'est qu'un chemin ! Même si ils font tous 512 octets, ça fera 600 octets par "File"... soit 600Ko pour 1000 files ! C'est moins qu'une image de 400x400 pixels !

    Si vraiment il faut se restreindre coté mémoire pour les File.... on peut imaginer un FileFilter qui prend en paramètre un index minimal de l'image et ne retourne que "true" que pour le premier File après cet index...

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

Discussions similaires

  1. Affichage d'images dans une boucle
    Par joforum59 dans le forum Android
    Réponses: 1
    Dernier message: 24/08/2012, 00h34
  2. [MySQL] récupérer les dimensions des images dans une boucle while
    Par Navyel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/08/2007, 11h09
  3. Probleme d'affichage d'image dans une fenetre
    Par cgregueusse dans le forum MFC
    Réponses: 1
    Dernier message: 03/08/2005, 11h08
  4. Affichage d'images dans une fenêtre
    Par tonycalv dans le forum MFC
    Réponses: 6
    Dernier message: 20/04/2005, 20h02

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