2010-08-10 4 views
10

Je souhaite que les éléments de la liste soient glissés un à la fois de gauche à droite. Je les éléments suivants dans res/Anim/slide_right.xmlProblème lors de l'animation de la mise en page ListView

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> 
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="150" /> 
</set> 

Et dans ma méthode onCreate dans mon ListActivity Je:

LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.slide_right); 
mList.setLayoutAnimation(controller); 

Quand je lance, je reçois un RuntimeException causé par Unknown layout animation name: set

Qu'est-ce que je fais mal?

+0

intéressant, votre code fonctionne bien pour moi. –

Répondre

28

J'ai eu le même problème et il me semble l'avoir résolu. Je pense que ce problème est similaire à celui-ci: http://groups.google.com/group/android-developers/browse_thread/thread/2266e171b9b0cf17

J'ai posté ma réponse là-bas ici aussi (avec quelques modifications). Vous devrez définir un deuxième fichier XML contenant un élément layoutAnimation:

"Si vous souhaitez appliquer une animation en utilisant android: layoutAnimation (ou en utilisant loadLayoutAnimation), il semble que vous deviez définir un fichier XML supplémentaire cela se réfère à votre animation (échelle, ensemble, traduire, etc ...) Vous pouvez trouver un exemple ici: http://developerlife.com/tutorials/?p=343

Par exemple, votre deuxième fichier xml ressemblerait à ceci (appelons-le exemple.xml) :

<?xml version="1.0" encoding="utf-8"?> 
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:delay="10%" 
    android:animation="@anim/slide_right" 
/> 

Vous pouvez alors se référer à cette animation dans votre fichier de mise en page:

android:layoutAnimation="@anim/example" 

(ou dans votre code à l'aide loadLayoutAnimation)

"

Hope this helps.

Ciao!

3

Je ne sais pas si vous avez déjà trouvé l'âme mais laissez-moi vous dire comment j'ai trouvé la solution.

Créez un autre fichier xml Android dans votre dossier anim. Laissez-le être list_layout_controller.xml comme ci-dessous

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
     android:delay="20%" 
     android:animationOrder="normal" 
     android:animation="@anim/slide_right"> 
</layoutAnimation> 

Maintenant, définissez list_layout_controller.xml (en utilisant @anim notation) comme l'animation comme ci-dessous et exécutez:

LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.list_layout_controller); 
mList.setLayoutAnimation(controller); 
Questions connexes