我设置了这样的动画:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Animation anim = AnimationUtils.loadAnimation(context, R.anim.rotate);
holder.windPropellers.setAnimation(anim);
break;
}
当视图滚动时,屏幕动画停止。当你向后滚动时,它根本就没有动画效果。
答案 0 :(得分:5)
您需要在视图中设置瞬态,以防止其被回收。
您的代码如下所示:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
Animation anim = AnimationUtils.loadAnimation(context, R.anim.rotate);
holder.windPropellers.setHasTransientState(true);
anim.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
holder.windPropellers.setHasTransientState(false);
}
});
holder.windPropellers.setAnimation(anim);
break;
}
答案 1 :(得分:0)
我使用带有自定义图片/可绘制图片的ProgressBar
来代替,因为我无法获得其他答案来完美地工作。
根据需要在setVisibility(View.GONE/VISIBLE)
中设置onBindViewHolder
。
<ProgressBar
android:id="@+id/pbUpload"
android:layout_width="52dp"
android:layout_height="52dp"
android:layout_gravity="center"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/loader_rotate"
android:indeterminateDuration="1000"
android:visibility="gone" />
和Drawable loader_rotate.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:drawable="@drawable/loader"> <!-- a png image in drawable folders -->
</rotate>
</item>
</layer-list>