Я хочу плавно перейти к следующей позиции прокрутки в своем пользовательском представлении (при нажатии кнопки или событии). Как это реализовать? Прежде всего, я не вижу класс анимации прокрутки (только альфа, поворот, масштабирование и перевод). Во-вторых, имея класс анимации, я не могу видеть итеративный (скажем, прокручивать 100-пиксельные права, независимо от того, какая у нас есть позиция), только абсолютные (т.е. Анимировать от одного постоянного значения к другому).
Как оживить положение прокрутки? Как прокручивать плавно?
Ответ 1
Предполагая, что вы используете ScrollView, работает ли smoothScrollTo (...)?
http://developer.android.com/reference/android/widget/ScrollView.html#smoothScrollTo%28int,%20int%29
Ответ 2
Используя ObjectAnimator
, это пример прокрутки вверх:
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();
}
Ответ 3
Анимационная прокрутка выполняется с помощью комбинации Scroller/OverScroller (для вычисления временных интерполированных значений смещений прокрутки), GestureDetectors (для запуска объекта скроллера) и метод onComputeScroll представления (который неявно является вашим циклом анимации).
Официальные андроидные документы теперь имеют подробное руководство по именно этой теме. http://developer.android.com/training/gestures/scroll.html
Ответ 4
Смотрите пример view_cache_demo, чтобы увидеть, как сделать анимированную прокрутку. Он работает в 2D, кэширует сложный чертеж, а также обрабатывает жест fling, но вы можете упростить все это при необходимости.