2013-06-26 26 views
14

Có cách nào để gói hỗ trợ ViewPager chụp nhanh trang tiếp theo bằng một lần kéo ngắn hơn không? Các hành vi mặc định có vẻ là ngay cả khi tôi kéo gần 75% trang vẫn snaps trở lại trang trước khi tôi cho đi. Tôi muốn làm cho các snap snap ngắn hơn và làm cho ViewPager snap đến trang tiếp theo để thay thế.Tạo chế độ xem của ViewPager với thao tác kéo ngắn hơn

Lưu ý rằng thao tác này được áp dụng cho cử chỉ kéo. Một cử chỉ quăng đòi hỏi cử chỉ ngắn hơn nhiều.

Trả lời

22

Bạn có thể làm ad-hoc này, mà không lo lắng quá nhiều về bên trong của ViewPager chừng nào bạn muốn tăng vùng mục tiêu:

private class MyPageChangeListener implements OnPageChangeListener { 
    private float mLastPositionOffset = 0f; 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     if(positionOffset < mLastPositionOffset && positionOffset < 0.9) { 
      mViewPager.setCurrentItem(position); 
     } else if(positionOffset > mLastPositionOffset && positionOffset > 0.1) { 
      mViewPager.setCurrentItem(position+1); 
     } 
     mLastPositionOffset = positionOffset; 
    } 
} 
+0

Làm việc như một sự quyến rũ. Cảm ơn bạn! – Juhani

+1

Ý tưởng hay, mặc dù tôi nghĩ nó hơi lạ một chút – astuetz

1

Có vẻ như các giá trị này được mã hóa cứng theo phương pháp riêng tư, vì vậy không có cách nào đơn giản để ghi đè chúng.

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/support/v4/view/ViewPager.java#2075

+3

Đúng, nhưng các giá trị aren' t 0,4/0,6f (như họ đang cắt ngắn). Tôi nghĩ * nó hoạt động được 60% chiều rộng ViewPager cho cả hai hướng. Vây chỉ cần 25 pip, với vận tốc 400 dip/s. –

+0

@ChrisBanes Tất nhiên bạn nói đúng, tôi chỉ nhìn rất nhanh thôi - cảm ơn! – astuetz

Các vấn đề liên quan