[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' 카테고리의 다른 글
[Java]안드로이드 권한요청 class (0) | 2020.06.12 |
---|---|
[Kotlin, JAVA]밀리세컨드 단위 시간 구하기 (0) | 2020.04.27 |
[Kotlin]Handler 이용하여 메인 UI 건드리기 (2) | 2020.04.27 |
[Kotlin]Toast 사용하기 (0) | 2020.04.23 |
[Kotlin]안드로이드 권한 요청 (6) | 2020.04.07 |