Я ищу способ, когда пользователь долго касается отображения карты (скажем, в течение 1000 мс), чтобы я мог как-то выполнить определенное действие.
Как бы я мог судить о том, как долго пользователь дотрагивается до вида карты (или любого вида).
Это было бы похоже на приложение Google Maps для 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
время окончания должно быть установлено на ноль ... но это не ... любая идеяпочему?