2014-02-05 4 views
6

을 구현하려면 SurfaceView이 필요한 게임을 만들고 있습니다. 게임 도중 특정 시간 동안 리스너를 일시 중지하고 싶습니다. onTouch() 메소드에서 false를 반환하려고했으나 메소드가 계속 실행됩니다. 다른 방법으로 리스너를 언젠가 일시 중지 할 수 있습니까? 그리고 누군가는 onTouch()에서 실제로 false를 반환하는 것을 설명하십시오.OnTouchListener에서 false를 반환하면 실제로 어떻게됩니까?

답변

12

: 당신이 true를 반환하는 경우

Returns 
True if the listener has consumed the event, false otherwise. 

당신은 언론이 알아서되는 안드로이드 말한다. 잊어 버려.

false을 반환하면 기본적으로 "내 문제가 아니라 다른 사람이이 클릭을 처리해야합니다"라고 말합니다. 그런 다음 Android는 이벤트를 다른보기로 전달하여 사용자의 시야에있을 수 있습니다.

0

구현을 등록 취소해야합니다. 매개 변수로 null을 제공하면됩니다. 일시 중지 모드가 끝나면 다시 설정하십시오. return true 인 경우 터치 이벤트가 다른 가능한보기로 전달되지 않습니다. View documentation에서

3

true를 반환하면 documentation에 표시된대로 이벤트를 소비 한 시스템에 신호를 보냅니다. 즉, 터치 리스너가있는 다른 뷰에서도이 이벤트를 처리하지 못합니다. false를 반환하면 이벤트가 처리를 위해 부모보기로 전달됩니다.

예를 들어 Listview가 Viewpager 안에 중첩되어 있으면 Listview가 touchevent를 처리 할 수있는 첫 번째보기입니다. 수평 스 와이프이면 이벤트는 listview를 통해 처리되지 않으며 뷰 페이지가 스 와이프를 처리 할 수 ​​있습니다.

관련 문제