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 :

Faire defiler une image


Sujet :

Android

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 2
    Par défaut Faire defiler une image
    Bonjour,

    Je cherche a faire défiler une image du haut vers le bas.

    J'ai mis en image de fond une route et j'ai superposé dessus une image transparente contenant lignes blanches :

    Nom : Capture.PNG
Affichages : 219
Taille : 34,6 Ko

    J'aimerais que ces lignes blanches se déplacent vers le bas pour donner l'impression que la voiture avance.

    J'ai donc d'abord pensé à simplement baisser l'image :

    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
                        Runnable runnable = new Runnable()
                        {
                            @Override
                            public void run()
                            {
                                try {
                                        ligneBlanche.setY( ligneBlanche.getY() + 10);
                                        Thread.sleep(50);
                                } catch ( Exception e) {
                                    e.printStackTrace();
                                }
     
                            }
                        };
     
                        new Thread(runnable).start();
    Le problème étant que les lignes disparaissent une fois arrivée en bas, et que remonter d'un coup l'image n'est pas du tout naturel

    Je cherche donc une solution pour que mon image défile vers le bas indéfiniment .

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 25
    Par défaut
    Une idée me vient à l'esprit, pourquoi tu n'utiliserai pas 2 lignes?
    Une ligne A comme la tienne
    Une ligne B décalé (+ 10 de la précédente)

    Tu affiches la A, la B disparaît et vice-versa.
    Cela pourrait donner l'illusion que la voiture avance.
    Tu peux même accélérer l'apparition/disparition des lignes pour augmenter la vitesse

    Si ça fait trop sapin de noël, tu créés 3 lignes. A voir ce que ça donne...

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ou alors une image qui fait 2 fois la hauteur : tu la descends jusqu'à sa moitié de hauteur, et tu la remontes à zéro. Comme elle fait 2 fois la hauteur, quand elle est descendu de sa moitié de hauteur, on continue à voir la ligne sur tout l'écran. Mais elle prend 2 fois la taille. On peut optimiser en faisant qu'elle ne soit juste un peu plus grande que l'écran (juste de quoi afficher un "trait", un "vide" en plus, et tu la remontes à chaque fois que le décalage correspondant est atteint)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Une solution alternative ( qui me semble un peu plus simple ) consiste à simplement dessiner une ligne en pointillé au milieu de l'écran, et décalé les pointillés.

  5. #5
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 2
    Par défaut
    Citation Envoyé par thegege2002 Voir le message
    Une idée me vient à l'esprit, pourquoi tu n'utiliserai pas 2 lignes?
    Une ligne A comme la tienne
    Une ligne B décalé (+ 10 de la précédente)

    Tu affiches la A, la B disparaît et vice-versa.
    Cela pourrait donner l'illusion que la voiture avance.
    Tu peux même accélérer l'apparition/disparition des lignes pour augmenter la vitesse

    Si ça fait trop sapin de noël, tu créés 3 lignes. A voir ce que ça donne...
    Merci pour cette idée. Malheureusement je viens d'essayer ta méthode ça parait vraiment pas fluide, il faudrait beaucoup d'images en décalé pour que ça ait l'air propre :/

    Citation Envoyé par joel.drigo Voir le message
    Ou alors une image qui fait 2 fois la hauteur : tu la descends jusqu'à sa moitié de hauteur, et tu la remontes à zéro. Comme elle fait 2 fois la hauteur, quand elle est descendu de sa moitié de hauteur, on continue à voir la ligne sur tout l'écran. Mais elle prend 2 fois la taille. On peut optimiser en faisant qu'elle ne soit juste un peu plus grande que l'écran (juste de quoi afficher un "trait", un "vide" en plus, et tu la remontes à chaque fois que le décalage correspondant est atteint)
    Le problème étant que je n'arrive pas a mettre une image plus grande que mon écran, soit elle automatiquement "resizé" soit alors j'ai carrément une erreur comme quoi la définition est trop grande et n'est donc pas supportée.
    Par exemple j'ai testé avec mon image de lignes blanche en 250*2060 pixels et j'obtiens l'erreur suivante : Bitmap too large to be uploaded into a texture (750x6180, max=4096x4096).
    Je vois pas du tout pourquoi j'obtiens cette erreur alors que 240*2060 < 4096*4096 ...


    Citation Envoyé par LeBzul Voir le message
    Une solution alternative ( qui me semble un peu plus simple ) consiste à simplement dessiner une ligne en pointillé au milieu de l'écran, et décalé les pointillés.
    J'ai essayé ça aussi dans un premier temps mais c'est pas du tout fluide :/

  6. #6
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Citation Envoyé par Romuald27 Voir le message
    J'ai essayé ça aussi dans un premier temps mais c'est pas du tout fluide :/
    Euh, je ne sais pas comment tu t'y es prit, mais dessiner une ligne en pointillé sera forcement plus fluide que de charger un bitmap de " 250*2060px " et de le redessiner sans arret avec un décalage.

    La "technique" que je propose, pour aller plus dans le détail, est de modifier la methode onDraw d'une view et de dessiner dans le canvas une ligne avec l'objet Paint.
    Dans le style la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Override
        public void onDraw(Canvas canvas) {
                canvas.drawLine(0, 0, 20, 20, paint);
        }
    Si tu as des soucis de fluidité avec simplement dessiner une ligne en pointillé, c'est que tu as un gros problème ailleurs !

Discussions similaires

  1. [PPT-2007] Faire defiler une image dans une diapo
    Par devalender dans le forum Powerpoint
    Réponses: 3
    Dernier message: 09/08/2014, 22h38
  2. faire defiler des images(une à la fois)
    Par faamugol dans le forum Flash
    Réponses: 2
    Dernier message: 24/02/2009, 12h57
  3. faire defiler une image
    Par ADSL[fx] dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/12/2005, 11h52
  4. faire dérouler une image avec l'api win32
    Par gdkenny dans le forum Windows
    Réponses: 6
    Dernier message: 26/11/2005, 21h46
  5. [css] Faire d'une image un lien
    Par Ace_Denghar dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/09/2005, 12h38

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