我有一个问题,即我有一个viewpager,我已经为TouchListener制作了一个GestureDetector来检测滑动..
当用户向右或向左滑动时,我会根据它的索引递增或递减一个具有每个图像键的数组,以便我可以检查此图片之前是否被收藏或是否可以下载它。用户向左或向右平滑滑动时效果很好,但问题是当用户快速刷几次增量并减少结果不正确的索引时,我怎么能处理这样的问题,有什么想法?
这是扩展SimpleOnGestureListener的代码:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
这是向右滑动时的代码,在向左滑动时相同,除了它增加" pagerPosition"没有减少:
public void onSwipeRight() {
pagerPosition--;
boolean isFavorites = db.checkfavorites(imageUrls[pagerPosition]);
if(isFavorites){
fave.setVisible(true);
unfave.setVisible(false);
}else{
fave.setVisible(false);
unfave.setVisible(true);
}
答案 0 :(得分:3)
如果您使用的是ViewPager
,为什么不使用OnPageChangeListener
它会为您提供当前页面的位置,您可以根据该位置执行计算。