Вопрос по scroll, drawing, android, animation – Как анимировать позицию прокрутки? Как плавно прокрутить?

26

Я хочу плавно перейти к следующей позиции прокрутки в моем пользовательском представлении (при нажатии кнопки или событии). Как это реализовать? Прежде всего я не могу видеть класс анимации прокрутки (только альфа, вращение, масштабирование и перевод). Во-вторых, имея класс анимации, я не могу видеть итеративный (скажем, прокручивать права на 100 пикселей независимо от того, какая у нас позиция) только абсолютные (то есть для анимации одного постоянного значения в другое).

Ваш Ответ

4   ответа
1

Прокрутка анимации осуществляется с помощью комбинацииScroller/OverScroller (чтобы вычислить интерполированные по времени значения ваших смещений прокрутки),GestureDetectors (чтобы запустить объект скроллера) иonComputeScroll метод View (который неявно является вашим циклом анимации).

Официальные документы для Android теперь имеют подробное руководство именно по этой теме.http://developer.android.com/training/gestures/scroll.html

0

Увидетьview_cache_demo Пример кода, чтобы увидеть, как сделать анимированную прокрутку. Он работает в 2D, кеширует сложное рисование, а также обрабатывает жесты, но вы можете при необходимости все это упростить.

33

Используя ObjectAnimator, это пример прокрутки вверх:

public void scroolToTop() {
            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();
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
39

Предполагая, что вы используете ScrollView, работает ли smoothScrollTo (...) для вас?

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

Error: User Rate Limit Exceeded Suzan Cioc
Error: User Rate Limit Exceeded

Похожие вопросы