Voglio far flingfunzionare il rilevamento dei gesti nella mia applicazione Android.
Quello che ho è un GridLayoutche contiene 9 ImageViews. La fonte può essere trovata qui: Grid Layout di Romain Guys .
Quel file che prendo proviene dall'applicazione Photostream di Romain Guy ed è stato solo leggermente adattato.
Per la semplice situazione del clic, devo solo impostare il valore onClickListenerper ogni ImageViewche aggiungo come principale activityche implementa View.OnClickListener. Sembra infinitamente più complicato implementare qualcosa che riconosce a fling. Presumo che sia perché potrebbe estendersi views?
Se la mia attività viene implementata
OnGestureListener, non so come impostarla come listener di gesti perGrido leImageviste che aggiungo.public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ...Se la mia attività viene implementata,
OnTouchListenernon ho alcunonFlingmetodo peroverride(ha due eventi come parametri che mi consentono di determinare se il fling era degno di nota).public class SelectFilterActivity extends Activity implements View.OnClickListener, OnTouchListener { ...Se creo un'abitudine
View, comeGestureImageViewquella estesaImageView, non so come dire all'attività che siflingè verificato dalla vista. In ogni caso, ho provato questo e i metodi non sono stati chiamati quando ho toccato lo schermo.
Ho davvero solo bisogno di un esempio concreto di questo lavoro attraverso le viste. Cosa, quando e come devo allegarlo listener? Devo essere in grado di rilevare anche i singoli clic.
// Gesture detection
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
// don't accept the fling if it's too short
// as it may conflict with a button push
if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
if (velocityX > 0) {
moveRight();
} else {
moveLeft();
}
return true;
} else {
return false;
}
}
});
È possibile posizionare una vista trasparente sulla parte superiore dello schermo per catturare le avventure?
Se scelgo di non inflatevisualizzare le visualizzazioni di immagini di figlio da XML, posso passare il GestureDetectorparametro come costruttore a una nuova sottoclasse di ImageViewquella che creo?
Questa è l'attività molto semplice per cui sto cercando di far funzionare il flingrilevamento: SelectFilterActivity (adattato da photostream) .
Ho esaminato queste fonti:
Finora nulla ha funzionato per me e speravo in alcuni suggerimenti.
Vi sono 2 importazioni facendo attenzione a scegliere che entrambe sono diverse
