RecyclerView 添加 Item 动画

RecyclerView add Item animation

我目前正在为 RecyclerView 项目添加收入动画。我想要它就像 Google+ Android 应用程序一样。这是我的代码片段:

anim/up_from_bottom.xml

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

    <translate
        android:fromXDelta="0%" android:toXDelta="0%"
        android:fromYDelta="60%" android:toYDelta="0%"
        android:duration="500" />
</set>

在适配器 class 中,我在函数 onBindViewHolder

中添加了函数 startAnimation(itemHolder.itemView, position);
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    ...
    startAnimation(holder.rootView, position);
}

startAnimation() 是这样的:

protected void startAnimation(View view, int position) {
    if (position > lastPosition) {
        Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.up_from_bottom);
        view.startAnimation(animation);
        lastPosition = position;
    }
}

看起来像Google+ Android应用程序的列表动画,但是它有一个错误,当我快速滚动时,动画不完美,比如第一个位置和当前位置同时执行动画

我就是想要Google+这样的动画,请问有什么办法解决,或者有什么办法。

我试过 recyclerview-animators,这是一个很棒的库,但我仍然做我想做的事。

请帮忙!谢谢!

你的 "bug" 发生在你快速滚动的时候,因为当它滚出显示时,viewholder 上的动画仍然是 运行ning 并且你正在将一个新的动画绑定到 viewholder 当recyclerview 回收它。

您应该覆盖 onViewDetachedFromWindow 并清除方法中视图上的动画。

这将确保视图上 运行 正在使用的任何动画在发送到回收器重新使用之前将被清除,并且您可以安全地 运行 视图上的新动画.