ViewPager
имеет метод для считывания программно: fakeDragBy
https://developer.android.com/reference/android/support/v4/view/ViewPager.html#fakeDragBy(float)
Вот как вы можете достичь этого:
- вызова
viewPager.beginFakeDrag()
- Начало аниматором. В
AnimatorUpdateListener
переопределения onAnimationUpdate
так называют viewPager.fakeDragBy()
- В
AnimatorListener
переопределения onAnimationEnd
так называют viewPager.endFakeDrag()
После этого вызова ViewPager
должен возвращаться к исходной странице.
Ответ vpaliyX с использованием перевода не отображает следующую страницу. Вам нужно использовать fakeDragBy
, чтобы пользователь мог кратко увидеть край следующей страницы.
В соответствии с просьбой, вот фрагмент кода:
private float drag;
...
@Override
protected void onResume() {
super.onResume();
mViewPager.postDelayed(new Runnable() {
@Override
public void run() {
mViewPager.beginFakeDrag();
drag = 0;
float density = getResources().getDisplayMetrics().density;
// 120 is the number of dps you want the page to move in total
ValueAnimator animator = ValueAnimator.ofFloat(0, 120 * density);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float progress = (float) valueAnimator.getAnimatedValue();
mViewPager.fakeDragBy(drag - progress);
drag = progress;
}
});
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) { }
@Override
public void onAnimationEnd(Animator animator) {
mViewPager.endFakeDrag();
}
@Override
public void onAnimationCancel(Animator animator) { }
@Override
public void onAnimationRepeat(Animator animator) { }
});
animator.setDuration(400);
animator.start();
}
}, 300);
}
я положил в 300 мс Задержка запуска. Я не знаю, нужно это или нет.
Обратите внимание на выражение drag - progress
, которое дает отрицательное число. Чтобы получить прокрутку влево, вы должны использовать отрицательное значение.
Также обратите внимание, что я не указал код, чтобы определить, было ли это при первом открытии приложения.
Вы можете играть со стартовой задержкой, продолжительностью анимации и количеством дпс, чтобы пронзить, пока не получите эффект, который вы ищете.
Изображение слайдера может быть хорошим подходом для этого –