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들은 인식 받을 기회조차 부여 받지 못하기 때문입니다.