【发布时间】:2018-08-17 07:37:05
【问题描述】:
我正在尝试检测 Android 中的长按。 GestureDetector 已弃用,因此我尝试使用 Handlers。但是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类没有被弃用,为什么不使用GestureDetector并避免使用弃用的构造函数呢? developer.android.com/reference/android/view/…
标签: android touch-event android-handler long-press postdelayed