如何确定安卓设备上的长触摸?编辑已添加
2022-09-03 02:23:50
我正在寻找一种方法,当用户长时间触摸地图视图(假设1000ms)时,我可以做些什么来执行某个操作。
我该如何判断用户触摸地图视图(或任何视图)的时间。
它类似于Android谷歌地图应用程序,当你长时间触摸时,它会弹出一个气球覆盖项目。
编辑已添加
mapView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
Toast.makeText(mapView.getContext(), "Hello 123", 2000);
return false;
}
});
以上不起作用...任何想法为什么?
编辑已添加
这就是我目前正在尝试的,但它似乎不起作用,即使我只是按电话,它也说该事件是一个action_move,
我正在我的MapActivity中使用内部类
private long startTime=0;
private long endTime=0;
class MapOverlay extends Overlay {
@Override
public boolean onTouchEvent(MotionEvent ev, MapView mapView) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
//record the start time
startTime = ev.getEventTime();
Log.d("LC", "IN DOWN");
}else if(ev.getAction() == MotionEvent.ACTION_UP){
//record the end time
endTime = ev.getEventTime();
Log.d("LC", "IN UP");
}else if(ev.getAction() == MotionEvent.ACTION_MOVE){
Log.d("LC", "IN move");
endTime=0;
}
//verify
if(endTime - startTime > 1000){
//we have a 1000ms duration touch
//propagate your own event
Log.d("LC", "time touched greater than 1000ms");
Toast.makeText(getBaseContext(), "Hello 123", Toast.LENGTH_SHORT).show();
startTime=0;
endTime=0;
return true; //notify that you handled this event (do not propagate)
}
return false;//propogate to enable drag
}
}
这是我的错误日志,对我来说没有任何意义
06-29 14:29:55.509: DEBUG/LC(7693): IN move
06-29 14:29:56.149: DEBUG/LC(7693): IN UP
06-29 14:29:56.149: DEBUG/LC(7693): 6346707 6349261
06-29 14:29:56.149: DEBUG/LC(7693): time touched greater than 1000ms
结束时间应设置为零...但它不是...任何想法为什么?