J'ai 6 boutons (verts) qui ouvrent des applications. En plus de ces boutons, il y a un autre bouton que j'utilise pour l'écoute par balayage.Android Cliquez sur le bouton derrière un autre bouton
Si aucun balayage n'est détecté (clic) Je veux cliquer sur les boutons verts sinon effectuer une action de balayage déclenchée par le bouton rouge.
ici est mon TouchListener pris de here
public class OnSwipeTouchListener implements OnTouchListener {
private final GestureDetector gestureDetector;
public OnSwipeTouchListener (Context ctx){
gestureDetector = new GestureDetector(ctx, new GestureListener());
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
result = true;
}
}
else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
result = true;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
public void onSwipeRight() {}
public void onSwipeLeft() {}
public void onSwipeTop() {}
public void onSwipeBottom() {}
public void onTap() {}
}
C'est là où je l'initialise auditeur.
Button ok = (Button) findViewById(R.id.btn_hex_over);
final Context c = context;
ok.setOnTouchListener(new OnSwipeTouchListener(getBaseContext()) {
public void onSwipeTop() {}
public void onSwipeBottom() {}
public void onTap() {}
});
Le balayage fonctionne mais ne peut pas cliquer sur les boutons. Essayez d'utiliser GridView
avec une vue 3x3 fixe.
Où est votre onClickListener? – Ankita
Vous n'avez pas besoin du bouton rouge pour un 'GestureListener'. Une mise en page simple fait aussi le travail. –
@MuratK. Mais j'ai besoin d'un auditeur sur toute la surface et pas seulement des boutons – CBeTJlu4ok