0

如果视图 B 的 50% 以上的追随者是可见的,则在释放时 ViewPager 将动画到View B而不是返回到View A.

如何将这一点从 50% 更改为 x%?

4

2 回答 2

0

您可以构建自己的自定义 ViewPager 并使用自己的浮点值覆盖正确的方法。就像是 :

public CustomViewpager extends ViewPager {

@Override
private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaX) {
    int targetPage;
    if (Math.abs(deltaX) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {
        targetPage = velocity > 0 ? currentPage : currentPage + 1;
    } else {

//change your values here for whatever you need for your purposes
        final float truncator = currentPage >= mCurItem ? 0.4f : 0.6f;

        targetPage = (int) (currentPage + pageOffset + truncator);
    }
    if (mItems.size() > 0) {
        final ItemInfo firstItem = mItems.get(0);
        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
        // Only let the user target pages we have items for
        targetPage = Math.max(firstItem.position, Math.min(targetPage, lastItem.position));
    }
    return targetPage;
}

}

于 2013-08-16T09:08:56.930 回答
0

您可以通过覆盖onScrollChanged()函数来做到这一点,这是一个示例:

@Override
public void onScrollChanged(ViewPager vp, int x, int y, int oldx, int oldy) {
    // We take the last son in the ViewPager
    View view = (View) vp.getChildAt(vp.getChildCount() - 1);

    if (diff <  view.getBottom()/2) {
        // do the animation
    }
}

让我知道这是否有效(以便我知道是否应该从此处删除答案)。

谢谢

于 2013-08-16T09:04:16.387 回答