【发布时间】:2016-12-18 23:17:52
【问题描述】:
我正在努力实现的目标
我想让线性垂直 RecyclerView 中的项目按顺序显示。我希望第一个项目出现,然后是第二个,然后是第三个,依此类推。这是我尝试完成的动画类型的示例。
我的尝试
我已经尝试过这个问题中提供的方法:How to animate RecyclerView items when they appear
但是,这并不是我想要完成的。这会导致 RecyclerView 中的所有项目同时出现,而不是一次出现一个。
我的代码
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;
}
}
}
【问题讨论】:
-
你考虑过像github.com/wasabeef/recyclerview-animators这样的OSS项目吗?
-
@SebastianRoth 我在研究时确实遇到了那个项目。该项目似乎有很多动画,但我已经有了自己想要使用的动画。我的问题是我希望 recyclerview 项目在最初打开活动时按顺序设置动画。因此,当活动打开时,我希望第一项动画,然后是第 2 项,然后是第 3 项,依此类推。
标签: android