我的应用
a ListView
。在第二天或前一天向右或向左滑动ListView
时,应加载。
我的解决方案
我尝试使用onFling()
方法来检测向左或向右滑动。如果我在TextView
上方的ListView
上滑动,效果很好。
我的问题
在ListView
上滑动不会触发onFling()
方法。可能是因为我的ListView
是可滚动的。关于如何解决这个问题的任何想法?
OnFling()
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
GestureDetector gestureDetector;
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(this, "Right to Left swipe", Toast.LENGTH_SHORT).show();
result = true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//left to right swipe
Toast.makeText(this, "Left to Right swipe", Toast.LENGTH_SHORT).show();
result = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
答案 0 :(得分:1)
这听起来像是ViewPager的理想用例,它旨在在同一片段的不同实例之间左右滑动。 ViewPager为您处理所有手势。
有关如何设置ViewPager的示例,请参见this guide和this guide。
答案 1 :(得分:0)
这解决了我的问题:
gestureListener = new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event){
return gestureDetector.onTouchEvent(event);
}
};
lv.setOnTouchListener(gestureListener);