J'ai un recyclerView horizontal. Lorsque je lance l'activité pour la première fois, je souhaite faire défiler tous les éléments de recyclerview vers le bas (à droite dans ce cas) et vers le haut (à gauche). Un peu comme une animation. Le comportement de défilement doit être visible pour l'utilisateur.
J'ai essayé de le faire comme:
Animation slideRight = AnimationUtils.loadAnimation(this, R.anim.slide_right);
Animation slideLeft = AnimationUtils.loadAnimation(this, R.anim.slide_left);
slideRight.setDuration(1000);
slideLeft.setDuration(1000);
slideRight.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
recyclerView.startAnimation(slideLeft);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
recyclerView.startAnimation(slideRight);
diapo animée à gauche:
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shareInterpolator="false" >
<translate
Android:duration="200"
Android:fromXDelta="-100%"
Android:fromYDelta="0%"
Android:toXDelta="0%"
Android:toYDelta="0%" />
</set>
diapo animée à droite:
<translate
Android:duration="200"
Android:fromXDelta="100%"
Android:fromYDelta="0%"
Android:toXDelta="0%"
Android:toYDelta="0%" />
cela fonctionne mais cela glisse simplement la vue de recyclage dans son ensemble, je veux juste faire défiler (glisser) les éléments. Comment puis-je faire ceci?
Vous pouvez utiliser scrollTo()
recyclerView.post(new Runnable() {
@Override
public void run() {
recyclerView.scrollToPosition(adapter.getItemCount() - 1);
// Here adapter.getItemCount()== child count
}
});
Ou smoothScrollToPosition()
.
recyclerView.post(new Runnable() {
@Override
public void run() {
recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);
}
});
Pour remonter, vous devez appeler la méthode ci-dessus avec l'index 0. Mais tout d'abord, vous devez vous assurer que la variable RecyalerView
défile jusqu'à la fin. Donc, mettez une ScrollListener
sur RecyclerView
pour vous assurer que le dernier élément est visible.
Utilisez ceci..
int top = 0;
recyclerView.smoothScrollToPosition(top); // for top
int bottom = recyclerView.getAdapter().getItemCount()-1;
recyclerView.smoothScrollToPosition(bottom);