如何立即查看 ViewPager 的方向?
How to check direction of ViewPager immediatelly?
我正在使用 ViewPager。每当页面移动时,我想检查当前 ViewPager 页面的方向。它可以由用户(滑动/单击选项卡布局中的另一个选项卡)或由 ViewPager 本身移动(用户未完成滑动并且页面正在移回空闲位置。
谢谢
我尝试了很多不同的解决方案(f.e。使用 PageTransformer 计算视图方向等。)但它们通常效果不佳。如果您在 first/last 选项卡上,您可能会走错方向。如果页面是由 viewpager 本身而不是用户滑动移动的,您可能无法获得任何方向...
最后有一个非常简单的解决方案,绝对是 "bug-proof" :) .
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) {}
});
如果您有任何问题,请告诉我。
将 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 的 left/right 方向。
我正在使用 ViewPager。每当页面移动时,我想检查当前 ViewPager 页面的方向。它可以由用户(滑动/单击选项卡布局中的另一个选项卡)或由 ViewPager 本身移动(用户未完成滑动并且页面正在移回空闲位置。
谢谢
我尝试了很多不同的解决方案(f.e。使用 PageTransformer 计算视图方向等。)但它们通常效果不佳。如果您在 first/last 选项卡上,您可能会走错方向。如果页面是由 viewpager 本身而不是用户滑动移动的,您可能无法获得任何方向...
最后有一个非常简单的解决方案,绝对是 "bug-proof" :) .
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) {}
});
如果您有任何问题,请告诉我。
将 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 的 left/right 方向。