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
并清除方法中视图上的动画。
这将确保视图上 运行 正在使用的任何动画在发送到回收器重新使用之前将被清除,并且您可以安全地 运行 视图上的新动画.
我目前正在为 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
并清除方法中视图上的动画。
这将确保视图上 运行 正在使用的任何动画在发送到回收器重新使用之前将被清除,并且您可以安全地 运行 视图上的新动画.