我需要在RecyclerView中实现动画,它对每个项目都有一个上滑效果。我搜索过这个并尝试了很多不同的东西。滚动时它会起作用,但第一次加载页面时它不起作用。我已在此链接上传了一段视频。
我试过这段代码
@Override
public void onBindViewHolder(ViewHolderHelper holder, int position, List<Object> payloads) {
super.onBindViewHolder(holder, position, payloads);
setAnimation(holder.itemView, position);
}
private void setAnimation(View viewToAnimate, int position) {
if (position > lastPosition) {
Animation animation = AnimationUtils.loadAnimation(mcontext, R.anim.slide_in_bottom_list_item);
animation.setInterpolator(new AccelerateInterpolator());
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
也试过
animation.setStartOffset(position * 100);
但缺少快速滚动的项目
任何人都可以帮助我吗?
答案 0 :(得分:1)
在互联网上搜索后,我决定做一个hacky解决方案。
animation.setStartOffset(position * 100);
很多帖子都有这个建议。但是当你在recyclerview中快速滚动时,这会搞乱。
所以我决定对前几个可见项进行此偏移,然后动画正确地应用于其他行而没有偏移。
@Override
public void onBindViewHolder(ViewHolderHelper holder, int position, List<Object> payloads) {
super.onBindViewHolder(holder, position, payloads);
setAnimation(holder.itemView, position);
}
private void setAnimation(View viewToAnimate, int position)
{
if (position > lastPosition)
{
Animation animation = AnimationUtils.loadAnimation(mcontext, R.anim.slide_in_bottom_list_item);
animation.setInterpolator(new DecelerateInterpolator());
if(position < 4)
animation.setStartOffset(position * 200);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
希望这有助于某人。