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.

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;
		}
	}
}
Que je crée doncau debut de mon activité comme ceci
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);
et que je lance dans le listener de ma vue principale
this.sliderLeft.startAnimation();
L'annimation marche bien, mon bouton apparait bien au coté gauche de mon ecran, avec comme layout de test
<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>
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).
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 !