Ciao a tutti, nel mio programma ho una ViewFlipper che mostra 3 diversi layout, cambiandoli con una semplice animazione quando vengono toccati dei tasti destra-sinistra. Volevo però anche fare in modo che l'utente, toccando lo schermo e trascinandolo, fosse in grado di spostarsi tra questi 3 layout senza usare i tasti.
Ho quindi scritto questo
public boolean onTouch(View v, MotionEvent event) {
float startx=0, endx=0;
ViewFlipper flipper=(ViewFlipper)v;
//fa la cosa appropriata a seconda del tipo di evento touch
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
startx=event.getRawX();
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
endx=event.getRawX();
if(endx-startx > 50){
//qui mettici il codice per spostarti a sinistra
flipper.setInAnimation(Animations.inFromLeftAnimat ion());
flipper.setOutAnimation(Animations.outToRightAnima tion());
flipper.showPrevious();
}
else if(startx-endx > 50){
//qui mettici il codice per spostarti a destra
flipper.setInAnimation(Animations.inFromRightAnima tion());
flipper.setOutAnimation(Animations.outToLeftAnimat ion());
flipper.showNext();
}
break;
}
Questo codice messo nel listener dei pulsanti funziona correttamente, invece qui lo schermo viene sempre spostato nella stessa direzione, anche se viene trascinato il dito nella direzione opposta.
Credo che il problema a questo punto sia nella event.getRawX(), però non capisco quale sia.
Mi potreste aiutare?
Grazie!