我目前正在使用 onTouchEvent(MotionEvent event) { }
来检测用户何时按下我的 glSurfaceView 是否有一种方法可以检测何时进行长按。
我猜想如果我在开发文档中找不到太多内容,那将是某种变通方法。类似于注册 ACTION_DOWN
并查看它在 ACTION_UP
之前的时间。
你如何使用 opengl-es 检测 Android 上的长按?
原文由 Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议
我目前正在使用 onTouchEvent(MotionEvent event) { }
来检测用户何时按下我的 glSurfaceView 是否有一种方法可以检测何时进行长按。
我猜想如果我在开发文档中找不到太多内容,那将是某种变通方法。类似于注册 ACTION_DOWN
并查看它在 ACTION_UP
之前的时间。
你如何使用 opengl-es 检测 Android 上的长按?
原文由 Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议
GestureDetector 是最好的解决方案。
这是一个有趣的选择。在 onTouchEvent 中,每个 ACTION_DOWN 安排一个 Runnable 在 1 秒内运行。在每个 ACTION_UP 或 ACTION_MOVE 上,取消计划的 Runnable。如果取消发生在 ACTION_DOWN 事件后不到 1 秒,Runnable 将不会运行。
final Handler handler = new Handler();
Runnable mLongPressed = new Runnable() {
public void run() {
Log.i("", "Long press!");
}
};
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView){
if(event.getAction() == MotionEvent.ACTION_DOWN)
handler.postDelayed(mLongPressed, ViewConfiguration.getLongPressTimeout());
if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP))
handler.removeCallbacks(mLongPressed);
return super.onTouchEvent(event, mapView);
}
原文由 MSquare 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
尝试这个: