Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] une image qui suit le doigt

Sujet résolu
    27 juin 2012 à 12:03:28

    Bonjour,

    J'ai un petit soucis pour qu'une image suive le doigt de l'utilisateur...
    (dans mon cas un bouton)

    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.

    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ù:
    <?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é plein de trucs sur internet mais ça ne m'a pas aidé =(
    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2012 à 14:21:31

      Le problème venait du fait que event.getX() renvoie des coordonnées relative au coin supérieur gauche de la view et non de l'écran.
      Du coup il suffit de faire un petit calcul pour avoir les coordonnées absolues.
      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;
      }
      
      • Partager sur Facebook
      • Partager sur Twitter

      [Android] une image qui suit le doigt

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown