2011-12-03 18 views
8

Tôi mở rộng lớp học của mình khỏi Chế độ xem. và tôi ghi đè hàm onTouchEvent. Nhưng, tôi chỉ có thể nhận được sự kiện ACTION_DOWN. không phải bất kỳ ACTION_UP hoặc ACTION_MOVE nào. Tôi nên làm gì để có được những sự kiện đó?lý do tôi luôn nhận được ACTION_DOWN từ onTouchEvent

Tôi chỉ ghi đè lên hàmTouchEvent và onDraw. và chỉ có quan điểm này trong ứng dụng

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    System.out.println("event:"+event.getAction()); 
    return super.onTouchEvent(event); 
} 
+1

Vui lòng hiển thị mã của bạn. Nếu không, chúng tôi chỉ có thể đoán xung quanh. Cảm ơn! –

Trả lời

28

Có thể bạn cần phải trả lại true thay vì trả lại sự kiện super. Điều đó có nghĩa là bạn đã xử lý sự kiện đó và do đó bạn có thể nhận được sự kiện tiếp theo.

1

Tại nơi làm việc, chúng tôi đã có LinearLayout được gọi là teaser có sự cố tương tự (đã lâu rồi). Dù sao, chúng tôi thấy rằng "hack" này dường như giúp nhận được một số phản hồi thêm trong số touch.

teaser.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent motionEvent) { 
     TransitionDrawable transition = (TransitionDrawable) v.getBackground(); 

     switch(motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       if(transition != null) transition.startTransition(250); 
       break; 
      case MotionEvent.ACTION_UP: 
       loadArticle(position); 
      case MotionEvent.ACTION_CANCEL: 
       if(transition != null) transition.reverseTransition(0); 
       break; 
     } 
     return false; 
    } 
}); 

// Has to be here for the touch to work properly. 
teaser.setOnClickListener(null); // <-- the important part for you 

Tôi thành thật không thể cung cấp cho bạn bất kỳ vần điệu hoặc lý do nào, nhưng hy vọng điều đó sẽ hữu ích.

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