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^^
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^^
prova a vedere qua:
http://stackoverflow.com/questions/9.../938657#938657
Grazie per avermi risposto,ma non ho ben capito a cosa serve quel pezzo di codice nell'esempio^^'
ma tu hai già scritto qualcosa o letto qualcosa sulla documentazione??
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
poi nel casecodice:final int newX = (int)event.getX(); final int newY = (int)event.getY(); final int X = (int) event.getRawX(); final int Y = (int) event.getRawY();
così ottengo le coordinate quando tocco l'immaginecodice:MotionEvent.ACTION_DOWN: alfaX = X - newX; alfaY = Y - newY;
mentre nel case
così ottengo le coordinate finali ovvero quando smetto di trascinare l'immagine.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"); }
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
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:
vedi se ti può servirecodice: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; } }
grazie ,ma ho risolto,ampliando quel pezzo di codice che ho postato^^