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