Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64

    [Android] Determinare direzione movimento

    Salve come determino in che direzione si sta muovendo un oggetto(in alto,in basso,a destra, a sinistra),nel caso specifico un'imageView che si muove tramite evento onTouchListener grazie^^

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    Grazie per avermi risposto,ma non ho ben capito a cosa serve quel pezzo di codice nell'esempio^^'

  4. #4
    ma tu hai già scritto qualcosa o letto qualcosa sulla documentazione??

  5. #5
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    qualcosina si,il fatto è che ho da poco iniziato con android,comunque ho fatto qualcosa per conto mio(sicuramente più "grezzo") ma per ora funziona all'interno dell'onTouch ho dichiarato
    le variabili
    codice:
    final int newX = (int)event.getX(); 
    final int newY = (int)event.getY(); 
    final int X = (int) event.getRawX(); 
    final int Y = (int) event.getRawY();
    poi nel case
    codice:
     MotionEvent.ACTION_DOWN:
     alfaX = X - newX; 
    alfaY = Y - newY;
    così ottengo le coordinate quando tocco l'immagine
    mentre nel case
    codice:
    case MotionEvent.ACTION_UP:
     deltaX = X - newX; 
    deltaY = Y - newY; 
     if(alfaX < deltaX) {
     Direzione = "Destra";
    System.out.println("Destra");
    }
    else if(alfaX > deltaX) {
    Direzione = "Sinistra";
    System.out.println("Sinistra");
    }
    if(alfaY < deltaY) {
     Direzione = "Basso";
    System.out.println("Basso");
    }
     else if(alfaY > deltaY){
    Direzione = "Alto";
    System.out.println("Alto");
     }
    così ottengo le coordinate finali ovvero quando smetto di trascinare l'immagine.
    Con quella serie di if inoltre salvo nelle variabile Direzione,appunto la direzione in cui muovo l'immagine,come ho detto è grezzo,ma forse per quello che devo fare può andare,sto trafficando con il collision detection,il mio problema sta nel realizzare ciò che succede dopo la collisione ovvero non far sovrapporre le due immagini Dx

  6. #6
    avevo fatto una cosa simile su una listview.
    in pratica se facevo lo swipe a destra dvoevo fare una cosa.
    sennò un'altra.
    per fare questo ho creato questa classe qua:
    codice:
    public class MyGestureListener extends SimpleOnGestureListener {
    
    	private static final int SWIPE_MIN_DISTANCE = 150;
    	private static final int SWIPE_MAX_OFF_PATH = 100;
    	private static final int SWIPE_THRESHOLD_VELOCITY = 100;
    	private MotionEvent mLastOnDownEvent = null;
    	private Context context = null;
    	
    	public MyGestureListener(Context context) {
    		this.context = context;
    	}
    
    	@Override
    	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    		if (e1 == null) {
    			e1 = mLastOnDownEvent;
    		}
    		if (e1 == null || e2 == null) {
    			return false;
    		}
    
    		float dX = e2.getX() - e1.getX();
    		float dY = e1.getY() - e2.getY();
    
    		if (Math.abs(dY) < SWIPE_MAX_OFF_PATH && Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY && Math.abs(dX) >= SWIPE_MIN_DISTANCE) {
    			if (dX > 0) {
    				Toast.makeText(context, "Right Swipe", Toast.LENGTH_SHORT).show();
    			} else {
    				Toast.makeText(context, "Left Swipe", Toast.LENGTH_SHORT).show();
    			}
    			return true;
    		} else if (Math.abs(dY) < SWIPE_MAX_OFF_PATH && Math.abs(velocityY) >= SWIPE_THRESHOLD_VELOCITY && Math.abs(dY) >= SWIPE_MIN_DISTANCE) {
    			if (dY > 0) {
    				Toast.makeText(context, "Up Swipe", Toast.LENGTH_SHORT).show();
    			} else {
    				Toast.makeText(context, "Down Swipe", Toast.LENGTH_SHORT).show();
    			}
    			return true;
    		}
    		return false;
    	}
    
    }
    vedi se ti può servire

  7. #7
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    grazie ,ma ho risolto,ampliando quel pezzo di codice che ho postato^^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.