Co próbuję wykonaćJak animować elementy RecyclerView po zainicjowaniu adaptera (w kolejności)?
chcę, aby elementy liniowo RecyclerView pionowej wyświetlane w kolejności. Chcę, aby pierwszy element pojawił się, następnie drugi, trzeci i tak dalej. Oto przykład typu animacji, którą próbuję wykonać.
Co Próbowałem
Próbowałem metod przewidzianych w tej kwestii: How to animate RecyclerView items when they appear
Jest to jednak nie do końca to, co usiłuję ukończyć. Powoduje to, że wszystkie elementy w RecyclerView pojawiają się jednocześnie, a nie pojedynczo.
Mój kod
public class ParentCommentsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private int lastPosition = -1;
//constructor and other code not shown...
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
switch (viewHolder.getItemViewType()) {
case OP:
OPViewHolder ovh = (OPViewHolder) viewHolder;
configureOPViewHolder(ovh, position);
setAnimation(ovh.getContainer(), position);
break;
case COMMENT:
CommentViewHolder cvh = (CommentViewHolder) viewHolder;
configureCommentViewHolder(cvh, position);
setAnimation(cvh.getContainer(), position);
break;
default:
RecyclerViewSimpleTextViewHolder vh = (RecyclerViewSimpleTextViewHolder) viewHolder;
configureDefaultViewHolder(vh, position);
break;
}
}
@Override
public void onViewDetachedFromWindow(final RecyclerView.ViewHolder viewHolder)
{
switch (viewHolder.getItemViewType()) {
case OP:
((OPViewHolder)viewHolder).clearAnimation();
break;
case COMMENT:
((CommentViewHolder)viewHolder).clearAnimation();
break;
default:
break;
}
}
private void configureDefaultViewHolder(RecyclerViewSimpleTextViewHolder vh, int position) {
//code...
}
private void configureOPViewHolder(OPViewHolder vh1, int position) {
//code...
}
private void configureCommentViewHolder(CommentViewHolder vh2, int position) {
//code...
}
private void setAnimation(View viewToAnimate, int position)
{
// If the bound view wasn't previously displayed on screen, it's animated
if (position > lastPosition)
{
Animation animation = AnimationUtils.loadAnimation(context, R.anim.fade_in);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
}
Czy brałeś pod uwagę projekt OSS, taki jak https://github.com/wasabeef/recyclerview-animators? –
@SebastianRoth Przebiegłem przez ten projekt podczas badania. Ten projekt wydaje się mieć wiele animacji, ale mam już własną animację, której chcę użyć. Mój problem polega na tym, że chcę, aby elementy do recyclerview były animowane w kolejności, gdy działanie jest otwierane początkowo. Kiedy więc czynność zostanie otwarta, chcę, aby element pierwszy był animowany, a następnie element 2, a następnie element 3 i tak dalej. –