ViewPager屏幕向右或向左滑动?

3
我该如何知道用户在视图页面中向左或向右滑动了屏幕?
indicator.setOnPageChangeListener(new OnPageChangeListener() {

    @Override
    public void onPageSelected (int page)
    {
        //page changed
    }

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

    @Override
    public void onPageScrollStateChanged (int arg0)
    {
    }
});

我使用了这种方法,相信onpagescrollstatechanged是可以告诉我们页面向左或向右滚动的,但我们该如何使用它呢?

4个回答

4

尝试这样做:

@Override
public void onPageSelected(int arg0) {
    if(lastPage>arg0)
      {//User Move to left}
    else(lastPage<arg0) 
     {//User Move to right}
      lastPage=arg0
}

2

将值分别保存在另一个变量中,并在页面滚动状态下进行比较。

OnPageChangeListener onPageChangeListener = new OnPageChangeListener() {

                @Override
                public void onPageSelected(int arg0) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onPageScrollStateChanged(int arg0) {
                    // TODO Auto-generated method stub
                    if(savePosition>arg0)
                    {
                        Toast.makeText(getApplicationContext(), "Swiped Right", Toast.LENGTH_SHORT).show();
                    }else
                    {
                        Toast.makeText(getApplicationContext(), "Swiped Left", Toast.LENGTH_SHORT).show();
                    }
                    savePosition = arg0;
                }
            };

1
这是我在ViewPager.OnPageChangeListener的onPageScrolled()方法中的解决方案: 在此输入图片描述

0
如果您想实时了解用户是否向左或向右滚动,可以尝试以下方法:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        float tempPositionOffset = 0;

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if (position == 0) {
                if (tempPositionOffset < positionOffset) {
                    Log.d("eric", "scrolling left ...");
                } else {
                    Log.d("eric", "scrolling right ...");
                }

                tempPositionOffset = positionOffset;

          Log.d("eric", "position " + position + "; " + " positionOffset " + positionOffset + "; " + " positionOffsetPixels " + positionOffsetPixels + ";");
            }
        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接