如果视图 B 的 50% 以上的追随者是可见的,则在释放时 ViewPager 将动画到View B
而不是返回到View A
.
如何将这一点从 50% 更改为 x%?
如果视图 B 的 50% 以上的追随者是可见的,则在释放时 ViewPager 将动画到View B
而不是返回到View A
.
如何将这一点从 50% 更改为 x%?
您可以构建自己的自定义 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;
}
}
您可以通过覆盖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
}
}
让我知道这是否有效(以便我知道是否应该从此处删除答案)。
谢谢