2014-12-04 2 views
4

사용자가 마지막 조각에있을 때 (바운스 효과가 발생할 때) 사용자가 스크롤하려고하면 새 활동을 시작하려고합니다. 사용 중 ViewPagerIndicatorViewPager에서 사용자가 스크롤을 초과하려고한다는 표시를 얻는 방법

다음 코드는 마지막 조각이 표시되면 활동을 시작합니다.

아이디어가 있으십니까?

CirclePageIndicator titleIndicator = (CirclePageIndicator)findViewById(R.id.titles); 
    titleIndicator.setViewPager(pager); 
    titleIndicator.(new); 
    titleIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
       selectedIndex = position; 

     } 

     @Override 
     public void onPageScrolled(int position, float arg1, int arg2) { 


     } 

     @Override 
     public void onPageScrollStateChanged(int scroll) { 
      if(selectedIndex == adapter.getCount()-1) 
      { 
       launchactivity)(; 
      } 


     } 


    }); 

답변

3

우리는 단지 우리가 오버 스크롤이 경우에 관심이 스크롤러의 상태가 ViewPager.SCROLL_STATE_DRAGGING는 사용자의 손가락이 화면과 뷰를 끌어 여전히 있다는 것을 의미 때 그 0 mPager.getAdapter().getCount() - 1입니다. 아래의 조건은 overscroll 모드로 들어가는 지 여부를 결정하기 위해 연속적인 0 positionOffset을 필요로합니다. 사용자가 손가락을 해제하는 경우

titleIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
       private int mScrollState = -1; 
       private float mPreviousPageOffset; 

       @Override 
       public void onPageScrollStateChanged(int state) { 
        super.onPageScrollStateChanged(state); 
        mScrollState = state; 
        if(mScrollState == ViewPager.SCROLL_STATE_IDLE) mPreviousPageOffset = -1; 
       } 

       @Override 
       public void onPageScrolled(int position, float positionOffset, 
         int positionOffsetPixels) { 
        super.onPageScrolled(position, positionOffset, positionOffsetPixels); 
        boolean isLastPosition = position == mPager.getAdapter().getCount() - 1; 
        if(isLastPosition && mScrollState == ViewPager.SCROLL_STATE_DRAGGING && mPreviousPageOffset == 0f && positionOffset == 0f){ 
          //launchActivity 
        } 
        mPreviousPageOffset = positionOffset; 
       } 
      }); 

positionOffset는 여전히 공을 이동하지만 스크롤러 상태는 ViewPager.SCROLL_STATE_SETTLING 될 것입니다 또는 우리는 한 번만 positionOffset 0을 얻을 것이다.

관련 문제