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 :

Une image qui suit le doigt


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Une image qui suit le doigt
    Bonjour,

    J'ai un petit soucis pour qu'une image suive le doigt de l'utilisateur...
    (ici un bouton, mais c'est pareille avec les imageView)

    Le problème c'est que le boutons ne reste pas sous le doigt... il semble se téléporter à d'autre position une "frame/image" sur deux.

    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
    package teste.bouton;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
     
    public class BoutonActivity extends Activity 
    {
        /* La fonction pour gérer l’évènement */
        private View.OnTouchListener touchListenerBouton = new View.OnTouchListener()
        {
        	@Override
        	public boolean onTouch(View view, MotionEvent event)
        	{
        		monBoutton.setX(event.getX());
        		monBoutton.setY(event.getY());
     
        		return true;
        	}
        };
     
     
        private Button monBoutton = null; 
     
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
        	super.onCreate(savedInstanceState);
     
        	setContentView(R.layout.main);
     
        	monBoutton = (Button)findViewById(R.id.button);
        		monBoutton.setOnTouchListener(touchListenerBouton);
        }
     
    }
    Le .xml au cas où:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/textButton"
        />
     
    </LinearLayout>
    Je n'ai aucune idée d'où est-ce que sa peut venir... Mais j'ai comme l'impression que c'est un problème de noob =D
    J'ai trouvé des trucs sur internet mais ça ne m'a pas aidé =(

  2. #2
    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 : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Tu cherches à réaliser un drag and drop, non ?

    C'est intégré dans l'API de base depuis la version 11 (HoneyComb).

    Doc : http://developer.android.com/guide/t...drag-drop.html

    Sinon, tu vas devoir faire mumuse avec un FrameLayout, c'est ce que j'ai implémenté.
    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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    En faite je voudrais juste déplacer l'image en la touchant.
    Puis une fois déposer, suivant là où elle se trouve je fait tel ou tel truc.

    Par exemple comme se tuto: [ame="http://www.youtube.com/watch?v=9d4Wua-cxZs&feature=player_embedded"]Learn Android Tutorial 1.32- Android's OnTouchListener and MotionEvent - YouTube[/ame]
    Sauf que dans mon cas, pendant que je déplace l'image, elle "saute" a d'autre endroit que derrière la souris :s

  4. #4
    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 : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Oui, tu tentes de faire un drag and drop, j'ai bien compris

    Si je peux, je testerai ton code demain.
    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

  5. #5
    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 : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    API level 11+ utilisé, ainsi que ce qui est fait pour le drag and drop.

    Si ton bouton se téléporte, c'est car tu prends directement l'événement "touché sur écran" et que tu déplaces ton bouton suite à celui-ci.

    Il faut que tu rajoutes "touché sur le bouton" dans ton algo, ce qui te donnera :
    • touché sir l'écran
    • test si le touché est sur le bouton
    • déplacer ou non ensuite
    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

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Ok, merci, je vais regarder ça =)

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    C'est bon j'ai trouvé le problème =)

    En faite c'est que le event.getX() donne la position relativement au coin supérieur gauche de la View et non celui de l'écran.
    Du coup suffit de rajouter les coordonnées de la view.

    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
    package com.example.deplacement;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.AbsoluteLayout;
    import android.widget.ImageView;
     
    public class MainActivity extends Activity
    {
    	ImageView image = null;
     
    	@Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            AbsoluteLayout screen = new AbsoluteLayout(this);
            screen.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
     
            setContentView(screen);
     
            image = new ImageView(this);
            image.setImageResource(R.drawable.nounours);
            image.setX(50);
            image.setY(50);
            image.setOnTouchListener(touchListenerBouton1);
            screen.addView(image);
        }
     
    	private OnTouchListener touchListenerBouton1 = new View.OnTouchListener() {
    	    @Override
    		public boolean onTouch(View v, MotionEvent event) {
    	    	switch(event.getAction())
    	    	{
    	    		case MotionEvent.ACTION_DOWN:
    	    			v.setX(event.getX() + v.getX());
    	    			v.setY(event.getY() + v.getY());
    	    			break;
    	    		case MotionEvent.ACTION_MOVE:
    	    			v.setX(event.getX() + v.getX());
    	    			v.setY(event.getY() + v.getY());
    	    			break;
    	    		case MotionEvent.ACTION_UP:
    	    			v.setX(event.getX() + v.getX());
    	    			v.setY(event.getY() + v.getY());
    	    			break;
    	    	}
    		    return true;
    		}
        };
    }
    Merci.

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

Discussions similaires

  1. 1 script, pour animer une image, qui en regroupe 3 scripts
    Par vampyer972 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 09/04/2006, 00h06
  2. lien dessus une images qui n'est pas en background
    Par tiyolx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/03/2006, 18h40
  3. Réponses: 2
    Dernier message: 19/09/2005, 17h20
  4. Suppression de cadre autour d'une image qui sert de lien
    Par vasilov dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/04/2005, 13h02
  5. probléme de cadre sur une image qui me sert de lien
    Par thomas_chamas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/11/2004, 17h36

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