2012-08-07 29 views
6

Tôi có dò cử chỉ thông thường để phát hiện fling, Nó là một thuộc tính thể hiện của một SurfaceViewthực hiện Fling trên android vải

GestureDetector flingDetector = new GestureDetector(getContext(),new SimpleOnGestureListener() { 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
        // Fling implementation 
      return true; 
     } 
}); 

Tôi vẽ rất nhiều thứ phức tạp trên một canvas và tôi có một phương pháp translate(dx,dy) mà tôi sử dụng với onScroll.

Vì vậy, câu hỏi của tôi là làm thế nào để tôi triển khai thực hiện phương pháp translate?

Dường như có rất nhiều câu hỏi khi phát hiện lỗi, câu hỏi của tôi là triển khai nó.

Trả lời

4

Tôi không chắc chắn điều này sẽ trả lời câu hỏi của bạn, tôi sẽ thử.

Kiểm tra http://developer.android.com/reference/android/view/MotionEvent.html cho MotionEvent.

Bạn có thể sử dụng hai sự kiện nhận được là e1 và e2 trên phương thức onFling và tính toán các khác biệt tọa độ với e1.getX(), e2.getX(), e1.getY(), e2.getY() .. .. Với điều này, bạn sẽ có dx và dy để sử dụng với dịch (dx, dy).

Vì thao tác trượt có vẻ như cử chỉ động, bạn có thể quyết định rằng có nghĩa là chuyển động bộ khuếch đại và áp dụng hệ số khuếch đại cho dx và dy, để khi người dùng cuộn, họ sẽ có được chuyển động chính xác, , chuyển động thực tế được khuếch đại.

Nếu yếu tố này phụ thuộc vào vận tốc, bạn có phản hồi tùy chỉnh cho mọi đầu vào của người dùng.

(Một điều khác sẽ làm hiển thị kết quả mà tôi đoán sẽ phụ thuộc vào những thứ khác).

Một ví dụ tôi có thể thử nếu nó đã được tôi:

  • tài cuộn nhẹ nhàng: Phong trào là dx, dy. Dịch (dx, dy).
  • nhận được nội dung tài:
    Bất động: dx = (e2.getX() - e1.getX() dy = (e2.getY() - e1.getY() yếu tố Fling:.. (Tuỳ chỉnh thực hiện) . chuyển động Modified: dxModified = dx * velocityX * F dyModified = dy * velocityY * F Cuối cùng:... dịch (dxModified, dyModified)

    Hope this helps chừng mực nào đó

    Edit: tôi đã không nhận ra câu hỏi này là từ năm 2012, hy vọng điều này sẽ giúp một ai đó một thời gian.Nó sẽ là tốt đẹp để biết về việc thực hiện cuối cùng anyway!