[Kotlin]Activity 전체화면 처리


예전에는 뭔가 AndroidManifest.xml에서 android:theme의 설정을 조금 만져주면 되었던걸로 기억하는데(개발한지 오래되서 맞는지는..) 최근버전에서는 많이 달라진것같네요.

 

전체화면모드가 생겨서 lean back, Immersive, sticky immersive라는 3가지 옵션으로 앱의 전체화면을 컨트롤하는 모양입니다.

 

private fun fullScreen(fullScreenOption : Int) {
  window.decorView.systemUiVisibility = (
    fullScreenOption
    or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    or View.SYSTEM_UI_FLAG_FULLSCREEN )
}​

 - fullScreenOption은 전체화면의 옵션을 설정해주기위한겁니다.

 - Immersive, sticky immersive

 - Immersive 옵션 : View.SYSTEM_UI_FLAG_IMMERSIVE

 - sticky immersive 옵션 : View.SYSTEM_UI_IMMERSIVE_STICKY

 - 위 두 옵션은 상태표시줄이나, 탐색메뉴를 없애 전체화면으로 만들어주며, 필요시 아래나 위에서 스와이프 동작을 하면 상태표시줄과 탐색메뉴가 동시에 보이게 됩니다.

 - 다만 sticky immersive옵션을 주면 상태표시줄이나, 탐색메뉴가 불투명하게 보이며, 스와이프 후 일정시간이 지나면 다시 전체화면으로 돌아가지만, Immersive옵션의 경우 스와이프 후 상태표시줄과 탐색메뉴가 불투명하지 않고, 일정시간이 지나도 계속 존재함을 확인하실 수 있습니다. (촬영 등에 탐색이벤트를 사용할일이 적은 Activity에 적합해보입니다.)

 - 만일 lean back 옵션을 주고 싶다면, fullScreenOption 매개변수를 지워주시면 됩니다. (lean back 옵션의 경우 Activity를 터치하면 상태표시줄과 탐색메뉴가 나오게됩니다. - 유저가 동영상을 보다가 어떠한 탐색 이벤트 등을 발생하고 싶을때 적합한듯 보입니다.), 아래 예시 참조

private fun fullScreen() {
  window.decorView.systemUiVisibility = (
    or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    or View.SYSTEM_UI_FLAG_FULLSCREEN )
}

 

 - 위 함수는 onWindowFocusChanged 함수안에서 실행해주면 됩니다. (아래 예제 참조)

override fun onWindowFocusChanged(hasFocus : Boolean) {
  super.onWindowFocusChanged(hasFocus)
  if(hasFocus) fullScreen(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
}​

 - onWindowFocusChanged함수는 Activity의 선택(Focus)여부를 확인하는 함수입니다. (override하여 사용하시면 됩니다.) 

 - Activity가 포커스 되면 fullScreen이 되는 형식입니다.

 - lean back 옵션의 경우 매개변수를 넘겨주지않으면 됩니다.

  >> fullScreen()

 

 *** Reference : https://developer.android.com/training/system-ui/immersive?hl=ko

 

전체 화면 모드 사용 설정  |  Android 개발자  |  Android Developers

동영상, 게임, 이미지 갤러리, 책, 프레젠테이션 슬라이드 같은 콘텐츠를 이용하기에 최적의 환경은 전체 화면입니다. 이 페이지에서는 전체 화면에서 사용자를 콘텐츠에 더욱 몰입하게 하는 방법과 사용자가 앱을 실수로 종료하지 않도록 하는 방법을 설명합니다. 앱에 화면 공간을 최대한 활용하겠다는 단순한 이유로 전체 화면 모드를 사용 설정하려고 할 수 있습니다. 하지만 사용자가 알림 확인이나 즉흥적인 검색 등을 위해 얼마나 자주 앱을 시작하고 종료하는지 고려해야

developer.android.com

 *** 소스에 문제가 있을 시 댓글달아주시면 최신화하도록 하겠습니다. 감사합니다.

+ Recent posts