2011-08-18 34 views
8

Tôi sử dụng GestureDetector để triển khai cuộn bên trong một tùy chỉnh View. thực hiện của tôi được dựa trên này: Smooth scrolling with inertia and edge resistance/snapbackĐộ trễ cuộn với GestureDetector onScroll

tôi nhận thấy một tạm dừng ngắn trước khi di chuyển bắt đầu: Tôi đã kiểm tra onScroll thông điệp và nhận thấy rằng một trong những đầu tiên đến chỉ sau khi một phong trào lớn của một ngón tay, gây lag đáng chú ý ngay từ đầu của cuộn. Sau đó di chuyển trơn tru.

Có vẻ như GestureDetector chỉ bắt đầu gửi onScroll tin nhắn sau khoảng cách tối thiểu giữa các cử chỉ để đảm bảo cử chỉ không phải là longtap hoặc nhấn (btw I set setIsLongpressEnabled(false)).

Có cách nào để thay đổi hành vi này và tạo cuộn trơn tru mà không triển khai cử chỉ cuộn tùy chỉnh bằng các sự kiện chạm mức thấp không?

Trả lời

10

Câu trả lời là không, bạn phải tự tạo GestureDetector của riêng mình. Nếu bạn nhìn vào mã nguồn Android (GestureDetector.java), dòng 524 đến 540 được sử dụng để phát hiện "chạm slop" cho một lần nhấn. Cụ thể, dòng 528 ngăn sự kiện onScroll không được gọi cho đến khi chuyển động nằm ngoài màn hình cảm ứng (được kéo từ cấu hình khung nhìn). Bạn không thể thay đổi cấu hình xem và slop được mã hóa cứng ở 16 pixel. Đây là bán kính gây ra độ trễ mà bạn đang nhìn thấy.

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