2017-10-11 4 views
0

J'ai suivi un tutoriel pour animer recyclerview item mais l'animation ne fonctionne pas si je suis confus que l'animation soit appliquée ou non.Recycleur voir l'article entrer l'animation ne fonctionne pas

Activity.Java: Le code mis à jour était ici je l'ai essayé avec le bouton clic, mais je ne sais pas comment appeler la méthode d'animation de la onBindHolder former l'adaptateur

private void setupRecyclerView() { 
       RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView.setLayoutManager(mLayoutManager); 
     final LayoutAnimationController controller = 
       AnimationUtils.loadLayoutAnimation(this, R.anim.layout_animation); 

     recyclerView.setLayoutAnimation(controller); 
     recyclerView.setAdapter(specialistListAdapter); 
    } 


    //placed a dummy button onclick to check animation working or not 
public void reloadData(View view) { 
     runLayoutAnimation(recyclerView); 
    } 

private void runLayoutAnimation(final RecyclerView recyclerView) { 
    final Context context = recyclerView.getContext(); 

    final LayoutAnimationController controller = 
      AnimationUtils.loadLayoutAnimation(context, R.anim.layout_animation); 

    recyclerView.setLayoutAnimation(controller); 
    recyclerView.getAdapter().notifyDataSetChanged(); 
    recyclerView.scheduleLayoutAnimation(); 
} 

layout_animation.xml:

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

item_list_animation.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:fromYDelta="-20%" 
     android:toYDelta="0" 
     android:interpolator="@android:anim/decelerate_interpolator" 
     /> 

    <alpha 
     android:fromAlpha="0" 
     android:toAlpha="1" 
     android:interpolator="@android:anim/decelerate_interpolator" 
     /> 

    <scale 
     android:fromXScale="105%" 
     android:fromYScale="105%" 
     android:toXScale="100%" 
     android:toYScale="100%" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/decelerate_interpolator" 
     /> 
</set> 

Merci à l'avance

Répondre

2

Tout d'abord vous devez charger l'animation dans la vue recycleur soit en XML ou programatically

<android.support.v7.widget.RecyclerView 
android:layout_width="match_parent" 
android:layout_height="match_parent"           
android:layoutAnimation="@anim/layout_animation"/> 

OU

LayoutAnimationController animation = 
AnimationUtils.loadLayoutAnimation(ctx, R.anim.layout_animation); 
recyclerview.setLayoutAnimation(animation); 

Aussi, vous devez appeler la méthode dans OnBindViewHolder comme runLayoutAnimation(YOUR_RECYCLER_VIEW).

+0

déjà animation a été chargé par programme que vous pouvez voir dans la fonction runLayoutAnimation, mais comment puis-je appeler la méthode dans onBindViewHolder –

+0

Dans le onBindViewholder chaque fois que vous avez une action à effectuer, vous devez appeler cette méthode.Ex dire un clic de certains de vous voulez supprimer une ligne puis dans le onclickListener vous devez appeler cela. – Anonymous

+0

Aussi vous n'avez pas besoin de cet objet de vue recycleur dans l'adaptateur. Vous pouvez obtenir un contexte comme yourViewHolder.itemView.getContext(); – Anonymous