Bonjour,

Je suis actuellement en train de faire une application android qui me permet de tracer des lignes sur un plan quadrillé. J'arrive donc à dessiner ces lignes et à les selectionner. Par contre j'ai un problème au niveau du déplacement de celui ci, lorsque je selectionne une nouvelle position, je n'arrive qu'à bouger la position (x,y) de départ de ma ligne et pas la position (x,y) d'arrivée.

Voici mon code :

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
public class SelectionLigneListener implements OnTouchListener {
 
	private Plan plan;
	private Ligne ligneSelected;
 
	public SelectionLigneListener(Plan plan) {
		this.plan = plan;
	}
 
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		v.performClick();
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			onTouchDown(event);
			return true;
		case MotionEvent.ACTION_MOVE:
			onTouchMove(event);
			return true;
		case MotionEvent.ACTION_UP:
			onTouchUp(event);
			break;
		}
		return false;
	}
 
	public void onTouchDown(MotionEvent event) {
		if (ligneSelected != null) {
			if (ligneSelected != null) {
				plan.moveLigneToPosition(
						ligneSelected,
						(int) event.getX(),
						(int) event.getY());
				plan.invalidate();
			}
 
		}
	}
 
	public void onTouchMove(MotionEvent event) {
		if (ligneSelected != null) {
			if (ligneSelected != null) {
				plan.moveLigneToPosition(
						ligneSelected,
						 (int)event.getX(),
						 (int)event.getY());
 
				plan.invalidate();
			}
		}
	}
 
	public void onTouchUp(MotionEvent event) {
		if (ligneSelected == null) {
			ligneSelected = plan.getCurrentFloor().getSelectedLigne(
					(int) event.getX(), (int) event.getY());
			if (ligneSelected != null) {
				ligneSelected.setSelected(true);
				plan.setSelectedLigne(ligneSelected);
				plan.getAttachedActivity().changeToMenu(
						IndoorActivity.MENU_PARAMETRAGE);
			}
		} else {
			if (ligneSelected != null) {
				ligneSelected.setSelected(false);
				ligneSelected = null;
			}
			if (plan.getAttachedActivity() != null)
				plan.getAttachedActivity().changeToMenu(
						IndoorActivity.MENU_EDITION);
			plan.invalidate();
		}
	}