Tôi đang tìm một cách để khi người dùng chạm vào một bản đồ dài (cho phép nói 1000ms) rằng tôi có thể thực hiện một số hành động nhất định.Làm thế nào để xác định một liên lạc dài trên Android?
Làm cách nào để tôi đánh giá thời gian người dùng chạm vào chế độ xem bản đồ (hoặc bất kỳ chế độ xem nào).
Nó sẽ tương tự như ứng dụng bản đồ google android, khi bạn liên lạc lâu, nó sẽ trả về một mục che bóng.
Chỉnh sửa thêm
mapView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
Toast.makeText(mapView.getContext(), "Hello 123", 2000);
return false;
}
});
ở trên không làm việc ... bất kỳ ý tưởng tại sao?
Sửa thêm
Đây là những gì tôi đang cố gắng vào lúc này, nhưng nó dường như không làm việc, ngay cả khi tôi chỉ nhấn trên điện thoại, nó nói sự kiện này là một action_move,
i đang sử dụng một lớp bên trong MapActivity tôi
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
}
}
và đây là log lỗi của tôi mà không thực hiện bất kỳ ý nghĩa với tôi
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
thời gian kết thúc phải được đặt thành 0 ... nhưng không phải là ... bất kỳ ý tưởng nào tại sao?
Điều này hoạt động hoàn hảo! Đây là phiên bản C#/Xamarin là ai đó cần: 'bảo vệ dài _touchStartTime; công khai ghi đè bool OnTouchEvent (MotionEvent e) {if (e.Action == MotionEventActions.Down) _touchStartTime = e.EventTime; if (e.Action == MotionEventActions.Up && e.EventTime - _touchStartTime> 1000) DoSomethingFun(); return base.OnTouchEvent (e);} ' – BayssMekanique