Ich habe es so gemacht. Könnte jemandem helfen. Ich weiß nicht, ob es der beste Weg ist, aber es funktioniert gut für mich.
UPDATE: zu beheben schnell Verhalten Scrollen, außer Kraft setzen onViewDetachedFromWindow
Methode des Adapters und rufen clearAnimation
auf der animierten Ansicht (in diesem Fall holder.itemView.clearAnimation()
) .Mögen dies:
@Override
public void onViewDetachedFromWindow(ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
holder.itemView.clearAnimation();
}
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="100%" android:toYDelta="0%"
android:duration="400" />
</set>
down_from_top.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="-100%" android:toYDelta="0%"
android:duration="400" />
</set>
Und schließlich diesen Code in onBindViewHolder
von recyclerView
. Erstellen Sie ein Feld namens lastPosition und initialisieren Sie es auf -1.
Animation animation = AnimationUtils.loadAnimation(context,
(position > lastPosition) ? R.anim.up_from_bottom
: R.anim.down_from_top);
holder.itemView.startAnimation(animation);
lastPosition = position;
Gibt es eine Möglichkeit, mit Scrollen schnell umzugehen es wird vermasselt – naiyu
@naiyu Entschuldigung, keine Ahnung. –
Um schnelles Scrollen zu beheben, implementieren Sie 'onViewDetachedFromWindow' auf dem Adapter und rufen' clearAnimation' in der animierten Ansicht auf (in Ihrem Fall 'holder.itemView'). –