2013-08-16 28 views
0

如果超過50%的查看B的追隨者是可見的,則發佈ViewPager時的 將動畫爲View B,而不是回到View A如何設置點後,ViewPager刷到另一個視圖?

我該如何改變從50%切換到x%的這一點?

+0

看看ViewPager,PageAdapter等 – Tobrun

+1

的源代碼,這不是50%:),這是40%,硬編碼由谷歌。 參考:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/support/v4/view/ViewPager.java#ViewPager.determineTargetPage %28int%2Cfloat%2Cint%2Cint%29 at line: else { final float truncator = currentPage> = mCurItem? 0.4f:0.6f; targetPage =(int)(currentPage + pageOffset + truncator); } – hieuxit

回答

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 
    } 
} 

讓我知道是否奏效與否(爲了讓我知道我是否應該從這裏取出應答)。

感謝

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; 
} 

}

相關問題