2015-03-22 24 views

risposta

2

Forse c'è un modo migliore, ma mi sono imbattuto in questo. È possibile ottenere l'effetto slide-in ritardato con RecyclerView e impostare un'animazione nel metodo onBindViewHolder.

Il codice seguente è adattato dal "come impostare l'animazione su oggetti RecyclerView quando appaiono". L'ho adattato per scaglionare l'animazione in base alla posizione. Sarà inoltre necessario che la logica interrompa la chiamata al metodo setAnimation dopo che tutte le posizioni per le viste inizialmente visibili vengono richiamate, a meno che non si desideri farle scorrere da sinistra mentre l'utente scorre.

How to animate RecyclerView items when they appear (adattato)

@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 
    holder.text.setText(items.get(position)); 

    // Here you apply the animation when the view is bound 
    setAnimation(holder.container, position); 
} 

/** 
* Here is the key method to apply the animation 
*/ 

private void setAnimation(View viewToAnimate, int position) 
{ 
     Context context = MyApp.getActivity(); 
     Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left); 

     animation.setDuration(position * 50 + 200); 
     viewToAnimate.startAnimation(animation); 

} 

Animare troppi vista può diventare molto mosso btw. Aumentare il ritardo dell'intervallo lascia più fuori dallo schermo mentre quelli precedenti stanno animando. Potresti provare a trovare alcune animazioni (oltre a quella predefinita di Android) che le lascerebbero fuori dallo schermo di più (ad esempio, mettere in pausa, quindi spostare o accelerare), in modo da poter controllare meglio quante visualizzazioni contemporaneamente vengono animate sullo schermo.

+0

Questa soluzione sembra funzionare o almeno mi ha dato un punto di partenza. Grazie – tintin21

Problemi correlati