我正在尝试检测Android中的长按。 GestureDetector
已过时,因此我尝试使用Handler
。但是handler
无法识别postDelayed
或removeCallbacks
。都Cannot resolve method
。
final Handler handler = new Handler() {
@Override
public void publish(LogRecord record) {
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
};
Runnable longPressed = new Runnable() {
@Override
public void run() {
Log.d("run", "long pressed");
}
};
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
handler.postDelayed(longPressed, 500);
break;
case MotionEvent.ACTION_MOVE:
handler.removeCallbacks(longPressed);
break;
case MotionEvent.ACTION_UP:
handler.removeCallbacks(longPressed);
break;
}
return super.onTouchEvent(event);
}
}
最佳答案
不赞成使用GestureDetector并不完全正确。
仅不推荐使用不包含Context作为构造函数参数的参数。其他有上下文的人也可以。
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public void onLongPress(MotionEvent e) {
Log.e("", "Longpress detected");
}
});
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
};