2012-12-02 21 views
6

Tôi đang cố kéo lớp phủ bản đồ và cũng hiển thị hộp thông tin nếu người dùng chạm vào ghim. Để làm như vậy, tôi cần đo thời gian giữa MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP. Để làm cho nó cảm thấy tự nhiên nhất có thể, tôi muốn biết giá trị Android sử dụng cho một Single-Tap (hiện tại tôi đang sử dụng 180ms) và cũng cho một Long-Tap.Thời lượng của một lần chạm và nhấn và giữ trong Android

Cảm ơn!

+1

Bạn không cần phải viết mã cho phân biệt giữa 'đơn -Tap' và 'long-Tap'. Thay vào đó hãy sử dụng 'GestureDetector'. Hãy cho tôi biết nếu như bạn cần thêm chị tiết. – Luis

+0

Tôi đã thử onTap() từ ItemizedOverlay và nó không được kích hoạt. Tôi giả sử onTouchEvent() mà tôi cần cho kéo là tiêu thụ tất cả các sự kiện cảm ứng. Vì vậy, tôi không nghĩ rằng GestureDetector sẽ hoạt động ... Có lẽ bạn đã hiểu lầm câu hỏi của tôi, gây ra vấn đề chính của tôi là phân biệt giữa single-Tap/Long-Tap và một cuộn. – timoschloesser

+1

'GestureDetector' không chặn các sự kiện chuyển động, bạn cần phải nạp chúng vào' GestureDetector' bằng cách gọi 'gestureDetector.onTouchEvent (ev)'. Vì vậy, miễn là bạn có thể có được một sự kiện chuyển động, bạn có thể đưa nó vào 'GestureDetector'. Sự kiện chuyển động được phân tích bởi lớp, và khi thích hợp, nó gọi lại các hàm gọi lại là 'onDoubleTap()', 'onLongPress()', 'onScroll()', 'onSingleTapConfirmed()' và một số thứ khác. Có thể bạn nên xem tài liệu tại: http://developer.android.com/reference/android/view/GestureDetector.html. – Luis

Trả lời

5

nguồn Android sử dụng 125ms cho một vòi duy nhất và 500ms như thời gian báo chí dài:

private static final int PRESSED_STATE_DURATION = 125; 

private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500; 

ViewConfiguration.java#PRESSED_STATE_DURATION

ViewConfiguration.java#DEFAULT_LONG_PRESS_TIMEOUT

+1

Cảm ơn. Tôi nghĩ rằng tôi phải đi với TAP_TIMEOUT thay vì PRESSED_STATE_DURATION, chính xác là 180ms mà tôi đã sử dụng. – timoschloesser

Các vấn đề liên quan