7

SimpleOnPageChangeListenerを拡張するクラスがあり、onPageScrollStateChangedメソッドで、ユーザーがViewPagerを前後にスワイプしたかどうかを判別できるようにしたいです。つまり、左から右にスワイプしたか、右から左にスワイプしたか。

私はこれについてたくさんのグーグルをしました、しかし私はそれについて何も見つけることができません。onPageScrollStateChangedメソッドは、スワイプがどちらの方向であったかを示すパラメーターを提供することを期待していましたが、そうではありません。

    @Override
    public void onPageScrollStateChanged(int state) {

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

誰かアイデアはありますか?

乾杯マイク

4

2 に答える 2

3

ViewPager.SimpleOnPageChangeListener を使用し、インスタンス変数を現在のタブの位置に保持します。これにより、スワイプされた方法を確認できます。

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 
         }

    }
于 2012-08-08T08:54:17.020 に答える
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;


        }
于 2015-03-09T00:23:27.317 に答える