我有一个 RelativeLayout 我正在将 TouchListener 放入使用 GestureDetector。我已经完成并且可以检测到双击,但是如何在 View 中添加滑动事件?
private void myTapEvent(){
RlContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
count++;
doTaskHere();
return true;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
});
}
实现滑动事件后,如何切换 a.) 只允许点击并禁止滑动 和 b.) 禁用点击并仅允许滑动。
最佳答案
在您的 GestureDetector
监听器中,添加 onFling
方法。此外,要在它们之间切换,您需要在您的类中有一个可以切换的 boolean
变量。
private boolean mAllowSwipe = true; // True = swipe, no double-tap; false = double-tap, no swipe
// ...
private void switchGestureMode() {
if (mAllowSwipe)
mAllowSwipe = false;
else
mAllowSwipe = true;
}
// ...
private void myTapEvent(){
// ...
gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
if (mAllowSwipe) {
return false;
}
count++;
doTaskHere();
return true;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (!mAllowSwipe) {
return false;
}
// Your logic here
}
});
}
// ...
关于android - 在双击和滑动之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753355/