因此,我要达到的目的是用户将打开 View 分页器的第一页,而 View 分页器将跳至第二页的一半,然后跳回到第一页,这表明还有更多页面可以滚动到。我想知道如何实现此目标?

最佳答案

您可以使用fakeDragBy方法来实现此效果:

viewPager.beginFakeDrag();
viewPager.fakeDragBy(offset); //offset in pixels.
viewPager.endFakeDrag();

编辑:

我为此做了方法:
private int animFactor;
private ValueAnimator animator = new ValueAnimator();

private void animateViewPager(final ViewPager pager, final int offset, final int delay) {
    if (!animator.isRunning()) {
        animator.removeAllUpdateListeners();
        animator.removeAllListeners();
        //Set animation
        animator.setIntValues(0, -offset);
        animator.setDuration(delay);
        animator.setRepeatCount(1);
        animator.setRepeatMode(ValueAnimator.RESTART);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            public void onAnimationUpdate(ValueAnimator animation) {
                Integer value = animFactor * (Integer) animation.getAnimatedValue();
                if (!pager.isFakeDragging()) {
                    pager.beginFakeDrag();
                }
                pager.fakeDragBy(value);
            }
        });
        animator.addListener(new AnimatorListenerAdapter() {

            @Override
            public void onAnimationStart(Animator animation) {
                animFactor = 1;
            }

            @Override
            public void onAnimationEnd(Animator animation) {
                pager.endFakeDrag();
            }

            @Override
            public void onAnimationRepeat(Animator animation) {
                animFactor = -1;
            }
        });
        animator.start();
    }
}

用法示例:
animateViewPager(pager, 10, 1000);

Edit2: ValueAnimator是Api级别11的类。还要在调用此方法之前设置寻呼机适配器。

关于android - Android Viewpager跳到半页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25475882/

10-10 02:15