如何立即检查ViewPager的方向?

时间:2017-01-14 17:42:01

标签: android android-viewpager android-tablayout

我正在使用ViewPager。我想在页面移动时检查当前ViewPager页面的方向。它可以由用户移动(滑动/单击选项卡布局中的另一个选项卡)或ViewPager本身(用户不完成滑动,页面将移回空闲位置。

由于

2 个答案:

答案 0 :(得分:2)

我尝试了很多不同的解决方案(例如,用PageTransformer计算视图方向等等。)但它们通常效果不佳。如果您在第一个/最后一个选项卡上,则可能会出错方向。如果页面被viewpager本身移动而不是用户的滑动,则可能无法获得任何指示...

最后有一个非常简单的解决方案,绝对是“防错”:)。

new ViewPager.OnPageChangeListener() {

                private float lastPositionAndOffsetSum = 0f;

                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                    if (position + positionOffset == lastPositionAndOffsetSum) {
                       //IT'S NOT MOVING
                    } else if (position + positionOffset > lastPositionAndOffsetSum) {
                       //RIGHT TO LEFT
                    } else {
                       //LEFT TO RIGTH
                    }
                    lastPositionAndOffsetSum = position + positionOffset                    }

                @Override
                public void onPageSelected(int position) {}

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

如果您有任何疑问,请与我们联系。

答案 1 :(得分:0)

将setOnPageChangeListener设置为ViewPager。

viewpager.addOnPageChangeListener(
            new OnPageChangeListener(){
@Override
public void onPageSelected(int arg0) {
    if(lastPage>arg0)
      {//User Move to left}
    else(lastPage<arg0) 
     {//User Move to right}
      lastPage=arg0
}
});

查看ViewPager.OnPageChangeListener的onPageSelected(int position)方法。该位置给出了新选择页面的索引。如果你跟踪最后一页索引,那么你可以将它与当前页面索引的位置进行比较,你可以得到viewpager的左/右方向。