Bonjour à toutes et à tous,
Un nouveau problème se pose à moi suite à l'utilisation d'un scrollView.
Avant que je n'utilise le scrollView, J'avais créé une méthode qui permettait de déplacer un opérateur dans la fenêtre en appuyant sur cet opérateur et en le déplaçant. En simplifié, c'est le code suivant :
Maintenant, j'ai ajouté mon scrollView. Si je fais la même manipulation : j'appuie sur un opérateur et commence à déplacer le doigt, l'opérateur suit un court moment, puis c'est tout le schéma qui se déplace d'un bloc ; autrement dit c'est le scrolling qui déplace toute la fenêtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 planSchema.setOnTouchListener(new View.OnTouchListener() { // Action sur le plan Schéma @Override public boolean onTouch(View v, final MotionEvent event) { int action = event.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: boolean vu = false; for (int i = 0; i < listOpe.size(); i++) { if (listOpe.get(i).isConcerned(event.getX(), event.getY())) { // le touché est sur un opérateur opeCours = listOpe.get(i); vu = true; break; } } if (!vu) { // le touché est à côté d'un opérateur, on voudrait déplacer la fenêtre par le scrolling } break; case MotionEvent.ACTION_MOVE: if (opeCours != null) { opeCours.deplace(event.getX(), event.getY()); // On redessine l'opérateur à sa nouvelle position au fur et à mesure du déplacement } break; case MotionEvent.ACTION_UP: break; } schema.invalidate(); // On redessine le schéma return false; } });
Comment pourrais-je modifier la méthode setOnTouchListener de telle manière que lorsque je déplace un opérateur, seul cet opérateur se déplace, mais si j'appuie dans un espace où il n'y a pas d'opérateur, c'est le scrolling qui agit.
Cela revient à faire le pseudo code suivant :
Si appui sur un opérateur :
- le déplacer,
- empêcher le scrolling d'agir.
C'est cette dernière instruction que je ne sais pas faire.
Merci de votre aide.
Pierre
Partager