web-dev-qa-db-fra.com

Comment animer la position du défilement? Comment faire défiler en douceur?

Je souhaite passer en douceur à la position de défilement suivante dans ma vue personnalisée (en appuyant sur un bouton ou sur un événement). Comment mettre cela en œuvre? Tout d'abord, je ne vois pas la classe d'animation de défilement (uniquement alpha, rotation, mise à l'échelle et traduction). Deuxièmement, ayant une classe d'animation, je ne peux pas en voir un itératif (disons pour faire défiler les droits de 100 pixels quelle que soit la position que nous avons) uniquement absolu (c'est-à-dire pour animer d'une valeur constante à une autre).

27
Suzan Cioc

En supposant que vous utilisez un ScrollView, smoothScrollTo (...) fonctionne-t-il pour vous?

http://developer.Android.com/reference/Android/widget/ScrollView.html#smoothScrollTo%28int,%20int%29

41
Ian Warwick

En utilisant ObjectAnimator, voici un exemple de défilement vers le haut:

public void scrollToTop() {
    int x = 0;
    int y = 0;

    ObjectAnimator xTranslate = ObjectAnimator.ofInt(mScrollView, "scrollX", x);
    ObjectAnimator yTranslate = ObjectAnimator.ofInt(mScrollView, "scrollY", y);

    AnimatorSet animators = new AnimatorSet();
    animators.setDuration(1000L);
    animators.playTogether(xTranslate, yTranslate);

    animators.addListener(new AnimatorListener() {

        @Override
        public void onAnimationStart(Animator arg0) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onAnimationRepeat(Animator arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animator arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationCancel(Animator arg0) {
            // TODO Auto-generated method stub

        }
    });
    animators.start();
}
33
anton46

L'animation du défilement se fait par une combinaison de l'utilisation de Scroller/OverScroller (pour calculer les valeurs interpolées dans le temps de vos décalages de défilement), GestureDetectors (pour démarrer l'objet scroller) et la méthode onComputeScroll d'une vue (qui est implicitement votre animation) boucle).

Les documents officiels Android ont maintenant un tutoriel détaillé sur ce sujet précisément. http://developer.Android.com/training/gestures/scroll.html

1
numan salati

Voir l'exemple de code view_cache_demo pour voir comment faire un défilement animé. Il fonctionne en 2D, met en cache les dessins complexes et gère également les mouvements de fling, mais vous pouvez simplifier tout cela si nécessaire.

0