Bonjour,
Je suis nouveau dans le developpement d'android, donc il se peut que mes problemes et questions soit stupide ^^
Voila je suis en train de developper une application, et j'aimerais avoir des vues qui apparaissent selon certains evenements.
Quand je clique au milieu de la fenetre par exemple un "menu" apparait de la gauche de l'ecran, ensuite une autre vue de score apparaiterait par le bas ainsi que dans un certain mode un historique arriverait par le dessus.
J'ai donc crée une classe Slider qui a pour but de creer l'animation automatiquement.
Que je crée doncau debut de mon activité comme ceci
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 public class Slider { private View parent; private View view; private TranslateAnimation animOut; private TranslateAnimation animIn; private boolean open; private int from; private boolean firstTime; public static final int TOP = 0; public static final int BOTTOM = 1; public static final int RIGHT = 2; public static final int LEFT = 3; public Slider(View p, View v, int from) { this.parent = p; this.view = v; this.open = false; this.from = from; this.firstTime = true; this.view.measure(-2, -2); } private void createAnimation() { int toX = 0; int toY = 0; int fromX = 0; int fromY = 0; switch (this.from) { case Slider.TOP: fromY = -this.view.getMeasuredHeight(); break; case Slider.BOTTOM: fromY = this.parent.getHeight(); toY = fromY - this.view.getMeasuredHeight(); break; case Slider.LEFT: fromX = -this.view.getMeasuredWidth(); break; case Slider.RIGHT: fromX = this.parent.getWidth(); toX = fromX - this.view.getMeasuredWidth(); break; } this.animOut = new TranslateAnimation(fromX, toX, fromY, toY); this.animIn = new TranslateAnimation(toX, fromX, toY, fromY); this.animIn.setFillAfter(true); this.animOut.setFillAfter(true); this.animIn.setDuration(1000); this.animOut.setDuration(1000); } @SuppressLint("NewApi") public void startAnimation() { if (this.firstTime) { this.createAnimation(); this.firstTime = false; } if (this.open) { this.view.startAnimation(this.animIn); this.open = false; } else { this.view.startAnimation(this.animOut); this.open = true; } } }
et que je lance dans le listener de ma vue principale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.sliderLeft = new Slider(findViewById(R.id.mainRelativeLayout), findViewById(R.id.left1), Slider.LEFT);
L'annimation marche bien, mon bouton apparait bien au coté gauche de mon ecran, avec comme layout de testthis.sliderLeft.startAnimation();
Cependant c'est juste l'aspect graphique du bouton qui apparait, le bouton n'est pas cliquable, le bouton "physique" est reste dans le coin gauche de l'appli (RelativeLayout le place la de base).<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainRelativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="showMenu" >
<Button
android:id="@+id/left1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="left" />
</RelativeLayout>
Deuxieme point quand je place met bouton directement au centre gauche, un autre au centre en bas, un autre au centre en haut, les animations font carrément n'importe quoi ou alors les boutons disparaissent...
Je sais pas si vous visualisé la chose mais si oui, aurait vous une solution pour avoir le resultat attendu ?
Merci d'avance !
Partager