IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Animation de vues


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Points : 42
    Points
    42
    Par défaut Animation de vues
    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 !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Pas tout à fait en en fait
    Le framework d'animation ne permet pas de déplacer physiquement les éléments graphiques. C'est uniquement leur visualisation qui est affectée.

    Cherches plutôt du coté des ObjectAnimator ou la librairie NineOldAndroids

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    Bonsoir,

    Merci pour ta reponse mais je pense etre tombé ce sur ce que je chercher depuis 1 semaine...
    AnimationUtils ! Il y a 2 methodes qui font une partie du boulot que je souhaite et je peux load une animation perso sinon, de plus, lui me le deplace "physiquement" je peux plus cliqué dessus quand il est invisible !

    Bref quelques jours de cassage de tete pour rien ! ^^'

    PS: Il y a pas des guides utiles qui permettent de voir ce que l'ont peut faire avec les methodes de certaines classes au lieu de devoir fouiller des heures entieres dans la docs et essayer une par une les methodes ? ^^

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    Merci =)

Discussions similaires

  1. Pb Changement de vue avec Animation + thread
    Par Hyst_76 dans le forum Android
    Réponses: 4
    Dernier message: 21/02/2014, 10h51
  2. Cimplicity: création des points et animation des vues
    Par marcoussi dans le forum Projets
    Réponses: 0
    Dernier message: 03/08/2011, 17h07
  3. [Débutant] Point de vue pour une animation
    Par wijia dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 12/06/2009, 13h38
  4. Réponses: 2
    Dernier message: 09/11/2006, 17h42
  5. [MFC] Animation dans une vue
    Par Philippe320 dans le forum MFC
    Réponses: 11
    Dernier message: 06/10/2006, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo