2012-08-08 21 views
6

Tôi có một lớp mở rộng SimpleOnPageChangeListener và trong phương thức onPageScrollStateChanged của tôi Tôi muốn có thể xác định liệu người dùng đã chuyển tiếp hoặc lùi qua ViewPager hay chưa. I E. Cho dù họ đã vuốt sang trái sang phải hoặc từ phải sang trái.Android SimpleOnPageChangeListener - Xác định hướng swipe

Tôi đã thực hiện rất nhiều điều thú vị về vấn đề này nhưng tôi không thể tìm thấy bất kỳ điều gì về nó. Tôi đã mong đợi phương thức onPageScrollStateChanged sẽ cung cấp một tham số cho biết hướng swipe là gì nhưng nó không.

@Override 
    public void onPageScrollStateChanged(int state) { 

     // Determine whether the user is swiping forwards or backwards through the ViewPager 
    } 

Có ai có ý tưởng nào không?

Cheers Mike

Trả lời

2

Sử dụng ViewPager.SimpleOnPageChangeListener và giữ một var dụ với pos tab hiện tại, như vậy bạn có thể làm việc ra cách mà nó được swiped.

private final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { 

     @Override 
     public void onPageSelected(final int position) { 
      onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position); 
      mCurrentTabPosition = position; 
     } 
    }; 

protected void onTabChanged(final PagerAdapter adapter, final int oldPosition, final int newPosition) { 
     //Calc if swipe was left to right, or right to left 
     if (oldPosition>newPosition){ 
      // left to right 
     } 
     else{ 
      //right to left 
     } 

    } 
+0

Hi Scottyab.Thanks bạn đã trả lời nhanh chóng. Tôi đã triển khai giải pháp này nhưng nó chỉ kích hoạt sau khi trang đã thay đổi. Tôi muốn thực hiện một số xác nhận để ngăn người dùng di chuyển về phía trước nhưng để cho phép họ di chuyển về phía sau. Với giải pháp này, trang đã thay đổi. – mighele

0
 int prevPage; 

     @Override 
     public void onPageSelected(int position) { 
      // went back a page 
      if (position-1 == prevPage) { 
       Log.i("Swipped", "Swipped Left"); 
      } 
      // went up a page 
      if (position+1 == prevPage) { 
       Log.i("Swipped", "Swipped Right"); 
      } 
      prevPage = position; 


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