2010-11-14 4 views
3

i peut utiliser un fichier XML comme ci-dessousCréation d'animation lors de l'exécution dans Android

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator"> 

<translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="500" /> 

</set> 

et charger ce xml à partir du code comme AnimationUtils.loadAnimation (mContext, com ..... R.anim.slidein)

tout fonctionne bien

Mais pour une raison que je dois faire la même chose sans utiliser XML comment créer la même animation en utilisant seulement le code j'ai essayé quelque chose comme ça

 
TranslateAnimation in = new TranslateAnimation(1.0f,0.0f,0.0f,0.0f); 


    in.setInterpolator(AnimationUtils.loadInterpolator(mContext, 
         android.R.anim.accelerate_interpolator)); 

    in.setDuration(500); 

mais ne fonctionnait pas, rien anime

Je pense que le problème est avec des pourcentages, dans le fichier XML que j'ai spécifié pourcentages, mais dans le constructeur de TranslateAnimation comment puis-je spécifier des pourcentages

+0

nous dans le fichier XML et plus de code source –

+0

Qu'est-ce que signifie ne fonctionne pas? L'animation n'est pas jouée? Comment appliquez-vous l'animatin à voir? Petite remarque: en XML, vous utilisez DecelerateInterpolator, mais dans le code, vous utilisez AccelerateInterpolator. –

+0

Je suis désolé je n'ai pas posté plus d'infos, La vue ne s'anime pas du tout, je réalise l'interpolateur mais je pense que cela n'a pas d'importance parce qu'il ne pas animer du tout – Monty

Répondre

5

Vous avez raison. Le constructeur que vous avez utilisé crée une animation avec des valeurs absolues (pixels). Vous devez utiliser another constructor. Comme ceci par exemple:

TranslateAnimation in = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 1.0f, 
    Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f); 

Expérience avec les premier et troisième paramètres. Essayez d'utiliser Animation.RELATIVE_TO_PARENT pour répondre à vos besoins.

+0

BINGO: D Merci un tas – Monty

0

Essayez cette (utilisation pour cent 'p'):

<translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="500" /> 
Questions connexes