2012-08-08 4 views
6

SimpleOnPageChangeListener를 확장하는 클래스가 있으며 내 onPageScrollStateChanged 메서드에서 사용자가 ViewPager를 통해 앞으로 또는 뒤로 스 와이프했는지 여부를 결정할 수 있기를 원합니다. 나는. 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 스 와이프했는지 여부Android SimpleOnPageChangeListener - 스 와이프 방향 결정

나는 이것에 대해 많은 검색을 해왔지만 그것에 대해 아무 것도 찾을 수 없습니다. onPageScrollStateChanged 메서드는 스 와이프 방향이 무엇인지 알려주는 매개 변수를 제공하지만 예상하지는 않습니다.

@Override 
    public void onPageScrollStateChanged(int state) { 

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

누구에게 아이디어가 있습니까?

건배 ViewPager.SimpleOnPageChangeListener 마이크

답변

2

사용하고, 현재 탭의 POS로는 강타 됐어요 방법 당신이 운동 할 수있는 방법을 인스턴스 (instance) var에 보관하십시오. 빠른 회신

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

안녕 Scottyab.Thanks. 이 솔루션을 구현했지만 페이지가 이미 변경된 후에 만 ​​시작됩니다. 나는 사용자가 앞으로 나아갈 수는 없지만 뒤로 움직일 수 있도록 몇 가지 검증을하고 싶다. 이 솔루션을 사용하면 페이지가 이미 변경되었습니다. – 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; 


     } 
관련 문제