如何获得用户试图在ViewPager中滚动的指示

时间:2014-12-04 16:26:41

标签: android android-fragments android-viewpager

我希望在用户尝试在最后一个片段(当发生跳出效果时)时滚动时启动一个新活动。我正在使用ViewPagerIndicator

一旦最后一个片段可见,下面的代码就会启动活动。

有什么想法吗?

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


        }


    });

1 个答案:

答案 0 :(得分:3)

我们只对我们有过度滚动的情况感兴趣,即0和mPager.getAdapter().getCount() - 1当滚动条的状态为ViewPager.SCROLL_STATE_DRAGGING时,表示用户的手指仍在屏幕上并拖动视图。以下条件需要连续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仍将为0,但滚动条状态为ViewPager.SCROLL_STATE_SETTLING,或positionOffset只有一次为0。