这里的目标是在谷歌地图上放置标记。
我想在用户执行 longClick() 时放置标记。
问题。长点击监听器没有关于用户点击位置的数据。我只能知道他真的点击了。此外,如果我使用触摸事件并且不使用它(我要求地图使用其默认监听器进行滚动),即使触摸重置,我也不会监听任何其他触摸事件。(其他事件不会发生这种情况,afaik)。
我如何知道用户在哪里进行了 longClick,以便我可以在地图中放置一个标记?
这里的目标是在谷歌地图上放置标记。
我想在用户执行 longClick() 时放置标记。
问题。长点击监听器没有关于用户点击位置的数据。我只能知道他真的点击了。此外,如果我使用触摸事件并且不使用它(我要求地图使用其默认监听器进行滚动),即使触摸重置,我也不会监听任何其他触摸事件。(其他事件不会发生这种情况,afaik)。
我如何知道用户在哪里进行了 longClick,以便我可以在地图中放置一个标记?
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
dosomething
return true; // processed the event
default:
return false;
}
}
这将允许您处理 ACTION_DOWN 事件,并对所有其他事件进行默认处理。
检查这是否有助于检测长按。的onFinish()
方法CountdownTimer
是您需要放置代码以添加标记的位置。
它将用于检测长按,不确定它是否会覆盖MapView
;)
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("action down", "action down started");
countDownTimer = new CountDownTimer(2500, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"long clicked", Toast.LENGTH_SHORT).show();
}
};
countDownTimer.start();
Log.d("action down", "action down ended");
break;
case MotionEvent.ACTION_UP:
countDownTimer.cancel();
countDownTimer = null;
break;
default:
break;
}
return false;
}