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