Android 터치 이벤트 막기
동기
지난 글에서 일종의 속임수를 사용해 iOS에서 Launch Screen의 제약을 피해 Animation을 적용해봤습니다. 그리고 이를 Android에서도 똑같이 구현해봤지만, Launch Screen 아래에 있는 이미 로딩 된 View들이 터치되는 현상이 발생했습니다. 그래서 이것들의 터치 이벤트를 막아 보았습니다.
방법
Android의 가상 Launch Screen을 위해 launchScreenFragment
를 사용했고, 이는 이름에서도 알 수 있듯이 Fragment입니다.
launchScreenFragment?.let { fragment ->
fragment.view?.setOnTouchListener { _, _ -> true }
}
위와 같이 launchScreenFragment
의 view에 setOnTouchListener
를 적용해 touch의 값을 항상 true
로 반강제적으로 반환하면, 해당 View 하단의 View들은 터치 이벤트를 받지 못하게됩니다. 그 이유는 최상단의 View가 onTouch일때 true
를 반환하면 touch가 발생했다는걸 즉시 알려버려 다른 View들은 인식 받을 기회조차 부여 받지 못하기 때문입니다.