长按GestureDetector也可在水龙头上触发 [英] Long press in GestureDetector also fires on tap
本文介绍了长按GestureDetector也可在水龙头上触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试通过以下问题实施代码:使用Android检测长按,但是即使我只是轻按它,它也始终会检测到长按.我的代码如下(我扩展了ImageView
,因为其中包含了更多代码,与该问题无关):
I tried implementing code from this question: Detecting a long press with Android, but it always detects a long press, if even I just tap it. My code is as follows (I extended ImageView
, because more code is in it, not relevant for this question):
public class EbsImageView extends ImageView {
final GestureDetector gestureDetector = new GestureDetector(this.getContext(), new GestureDetector.SimpleOnGestureListener() {
public void onLongPress(MotionEvent e) {
Log.e("", "Longpress detected");
}
public boolean onSingleTapUP(MotionEvent e) {
Log.e("", "Press detected");
// don't consume, we want the long press to fire if it was a
// long press
return false;
}
});
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
}
推荐答案
您需要覆盖onDown
并将其设置为return true
.以下代码对我有用:
You need to override onDown
and make it return true
. The following code worked for me:
class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent event) {
// triggers first for both single tap and long press
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
// triggers after onDown only for single tap
return true;
}
@Override
public void onLongPress(MotionEvent event) {
// triggers after onDown only for long press
super.onLongPress(event);
}
}
这篇关于长按GestureDetector也可在水龙头上触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文