我有一个扩展SimpleOnPageChangeListener的类,并且在我的onPageScrollStateChanged方法中,我希望能够确定用户是通过ViewPager向前还是向后滑动。 IE。他们是从左向右滑动还是从右向左滑动。

我已经对此进行了很多搜索,但是我找不到任何东西。我期望onPageScrollStateChanged方法将提供一个参数,指示滑动方向是哪个方向,但是没有。

    @Override
    public void onPageScrollStateChanged(int state) {

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

有人有什么想法吗?

干杯
麦克风

最佳答案

使用ViewPager.SimpleOnPageChangeListener并使用当前选项卡pos保留实例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
         }

    }

10-07 19:24
查看更多