Bonjour mon problème est le suivant sur mon application j'ajoute des lignes grises et je dois pouvoir ajouter des lignes d'une couleur rouge par dessus mais plus petit, le code pour ajouter une ligne est le suivant :
le code pour l'autre ligne est le suivant :
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 public class Ligne extends EltPlan { private static final int epaisseur = 8; private int a, b; private Ligne(int x, int y, int width, int height) { super(x, y, width, height); } public static Ligne LigneHorizontal(int x, int y, int lgr) { return new Ligne(x, y, lgr, epaisseur); } public static Ligne LigneVertical(int x, int y, int lgr) { return new Ligne(x, y, epaisseur, lgr); } public void doBitmap() { // Si la ligne est selectionné on l'encadre en rouge if (isSelected()) { setBitmap(Bitmap.createBitmap(getPixelsWidth() + 10, getPixelsHeight() + 10, Config.ARGB_8888)); for (b = 5; b < getBitmap().getHeight() - 5; b++) { for (a = 5; a < getBitmap().getWidth() - 5; a++) getBitmap().setPixel(a, b, Color.GRAY); } for (a = 0; a < getBitmap().getWidth(); a++) getBitmap().setPixel(a, 0, Color.RED); for (a = 0; a < getBitmap().getWidth(); a++) getBitmap().setPixel(a, getBitmap().getHeight() - 1, Color.RED); for (b = 0; b < getBitmap().getHeight(); b++) getBitmap().setPixel(0, b, Color.RED); for (b = 0; b < getBitmap().getHeight(); b++) getBitmap().setPixel(getBitmap().getWidth() - 1, b, Color.RED); } else { setBitmap(Bitmap.createBitmap(getPixelsWidth(), getPixelsHeight(), Config.ARGB_8888)); for (b = 0; b < getBitmap().getHeight(); b++) { for (a = 0; a < getBitmap().getWidth(); a++) getBitmap().setPixel(a, b, Color.GRAY); } } } }
Et pour l'insérer et le suivant:
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 public class Ligne2 extends EltPlan { private static final int epaisseur=10; private int a,b; private Ligne2(int x,int y,int width,int height) { super(x,y,width,height); } public static Ligne2 Ligne2Horizontale(int x,int y,int lgr) { return new Ligne2(x,y-1,lgr,epaisseur); } public static Ligne2 Ligne2Verticale(int x,int y,int lgr) { return new Ligne2(name,x-1,y,epaisseur,lgr); } @Override public void doBitmap() { if(isSelected()) { setBitmap(Bitmap.createBitmap(getPixelsWidth()+10,getPixelsHeight()+10, Config.ARGB_8888)); for(b=5;b<getBitmap().getHeight()-5;b++) { for(a=5;a<getBitmap().getWidth()-5;a++) getBitmap().setPixel(a, b, Color.rgb(222,184,135)); } for(a=0;a<getBitmap().getWidth();a++) getBitmap().setPixel(a, 0, Color.RED); for(a=0;a<getBitmap().getWidth();a++) getBitmap().setPixel(a,getBitmap().getHeight()-1, Color.RED); for(b=0;b<getBitmap().getHeight();b++) getBitmap().setPixel(0, b, Color.RED); for(b=0;b<getBitmap().getHeight();b++) getBitmap().setPixel(getBitmap().getWidth()-1, b, Color.RED); } else { setBitmap(Bitmap.createBitmap(getPixelsWidth(),getPixelsHeight(), Config.ARGB_8888)); for(b=0;b<getBitmap().getHeight();b++) { for(a=0;a<getBitmap().getWidth();a++) getBitmap().setPixel(a, b, Color.rgb(222,184,135)); } } }
Le code suivant me permet de l'inserer sur le plan :
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 public class InsertionLigne2Listener implements OnTouchListener { private Plan plan; private Ligne selected; private EltBatiment nvlElt, selectedLigne2; private int selection = 0; public static final int NO_SELECTION = 0; public static final int SELECT_LIGNE2 = 1; public InsertionLigne2Listener(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; } private void onTouchDown(MotionEvent event) { if (selected != null) { if (selected.isVertical()) { if (selection == SELECT_LIGNE2) selectedLigne2 = selected.getLigne2At( selected.getPosition().x, (int) event.getY()); } else { if (selection == SELECT_LIGNE2) selectedLigne2 = selected.getLigne2At((int) event.getX(), selected.getPosition().y); } } if (plan.getSelectedLigne() == null || (selectedLigne == null )) { if (plan.getSelectedLigne() == null) plan.setSelectedLigne(plan.getCurrentFloor().getSelectedLigne( (int) event.getX(), (int) event.getY())); selected = plan.getSelectedLigne(); if (selected != null) { selected.setSelected(true); if (selected.isVertical()) { switch (plan.getEltToInsert()) { case Plan.LIGNE2: { nvlElt = Ligne2.Ligne2Verticale(selected.getPosition().x, (int) event.getY(),30); nvlElt.setMeterWidth(nvlElt.getPixelsWidth() / plan.getScale()); nvlElt.setMeterHeight(1.5); nvlElt.setPixelsHeight((int) (nvlElt.getMeterHeight() * plan .getScale())); selected.add((Ligne2) nvlElt); selectedLigne2 = nvlElt; break; } } } else { switch (plan.getEltToInsert()) { case Plan.LIGNE2: { nvlElt = Ligne2.Ligne2Horizontale((int) event.getX(), selected.getPosition().y,30); nvlElt.setMeterHeight(nvlElt.getPixelsWidth() / plan.getScale()); nvlElt.setMeterWidth(1.5); nvlElt.setPixelsWidth((int) (nvlElt.getMeterWidth() * plan .getScale())); selected.add((ligne2) nvlElt); selectedLigne2 = nvlElt; break; } } } } } else { if (selected.isVertical()) { if (selection == SELECT_LIGNE2) selectedLigne2 = selected.getLigne2At( selected.getPosition().x, (int) event.getY()); } else { if (selection == SELECT_LIGNE2) selectedLigne2 = selected.getLigne2At((int) event.getX(), selected.getPosition().y); } } plan.invalidate(); } private void onTouchMove(MotionEvent event) { } private void onTouchUp(MotionEvent event) { } }
je dois pouvoir selectionner le premier qui m'ouvre un menu afin de pouvoir effectuer des reglages ou alors de pouvoir supprimer cette ligne le code est le suivant :
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 public class InsertionLigneListener implements OnTouchListener { private Plan plan; Ligne nvlElt; private int EltX, EltY; private int selection; private boolean onRight = false; public static final int NO_SELECTION = 0; public static final int SELECT_LIGNE = 1; public InsertionLigneListener(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; } private void onTouchDown(MotionEvent event) { } private void onTouchMove(MotionEvent evnet) { } private void onTouchUp(MotionEvent event) { switch (selection) { case SELECT_LIGNE: if (EltX == -1) { EltX = (int) event.getX(); EltY = (int) event.getY(); } else { int departX, departY; if (Math.abs((int) event.getY() - EltY) > Math .abs((int) event.getX() - EltX)) { // Ligne vertical if ((int) event.getY() > EltY){ departY = EltY; }else{ departY = (int) event.getY(); } departX = lastEltX; if (onRight) { nvlElt = Ligne.LigneVertical(departX, departY, Math.abs((int) event.getY() - EltY)); nvlElt.setPixelsHeight(nvlElt.getPixelsHeight() + nvlElt.getPixelsWidth()); } else { nvlElt = Ligne.LigneVertical(departX, departY, Math.abs((int) event.getY() - EltY)); } EltY = (int) event.getY(); onRight = false; } else { // Ligne horizontal if ((int) event.getX() > EltX) { onRight = true; departX = EltX; } else { onRight = false; departX = (int) event.getX(); } departY = EltY; nvlElt = Ligne.LigneHorizontal(departX, departY, Math.abs((int) event.getX() - EltX)); EltX = (int) event.getX(); } plan.add(nvlElt); plan.invalidate(); } break; } }
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 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) { } public void onTouchMove(MotionEvent event) { } 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(); } }
et du coup mon probleme est le suivant je dois maintenant pouvoir selectionner la ligne rouge pour pouvoir si je le veut supprimer ou faire des reglages mais mon problème et que des que je veux selectionner cette ligne alors c'est ma ligne grise qui est selectionné a chaque fois. Quelqu'un pourrait il m'aider
Merci
Partager