我有一个扩展SimpleOnPageChangeListener的类,在我的onPageScrollStateChanged方法中,我希望能够确定用户是通过ViewPager向前还是向后滑动。即他们是从左到右还是从右到左滑动。
我已经做了很多谷歌搜索,但我找不到任何相关的东西。我原以为onPageScrollStateChanged方法会提供一个参数,说明滑动的方向,但不是。
@Override
public void onPageScrollStateChanged(int state) {
// Determine whether the user is swiping forwards or backwards through the ViewPager
}
有没有人有任何想法?
干杯 麦克
答案 0 :(得分:3)
使用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
}
}
答案 1 :(得分: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;
}