안드로이드 R(11)에서 전체화면 구현하기
2021. 6. 3. 11:07ㆍ개발을 파헤치다/Android
반응형
안드로이드 R(11)에서는 더 이상 SystemUiVisibility를 사용할 수 없는데요.
이렇게 Deprecated(사라질 운명이라는 의미...)될 때마다 그에 맞는 대응을 해야 하는 안드로이드 개발자는
참 행복합니다^^ 쉴 새 없이 공부하고 그만큼 더 똑똑해질테니까요.
쉽게 생각하고 금방 되겠거니 했는데 생각보다 자료가 없고 맘처럼 되지 않아서 꽤 삽질을 했습니다.
아래 내용을 끝까지 보고 그냥 가져다 쓰기만 하셔도 제가 삽질한 시간은 버시는 겁니다 :)
하지만 제대로 이해하고 넘어가시길 추천드립니다. 자세한 내용은 코드에 주석으로 달아놓았으니깐요!
class MainActivity: AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 전체화면 메서드 호출
setFullScreen()
}
private fun setFullScreen(){
// 상단에 Action Bar 사라지게하기
supportActionBar?.hide()
// Android 11(R) 대응
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES>R){
// 이 값이 True이면 내부적으로 SYSTEM UI LAYOUT FLAG들을 살펴보고
// 해당 설정값들을 토대로 화면을 구성하게 됩니다.
// 따라서 False로 설정을 해야 이제 사라질(Deprecated)될
// Flag값들을 무시하고 Window Insets를 통해 화면을 구성할 수 있습니다
window.setDecorFitsSystemWindows(false)
val controller = window.insetsController
if(controller != null){
// 상태바와 네비게이션을 사라지게한다
controller.hide(WindowInsets.Type.statusBars() or
WindowInsets.Type.navigationBars())
// 특정 행동(화면 끝을 스와이프하는 등)을 했을 때에만
// 시스템 바가 나타나도록 설정
controller.systemBarsBehavior =
WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
}
// R 버전 이하 대응
else{
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
// 컨텐츠를 시스템 바 밑에 보이도록 설정
// 시스템 바가 숨겨지거나 보여질 때 컨텐츠 부분이
// 리사이징 되는 것을 막기 위한 설정
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)
}
}
}
반응형
'개발을 파헤치다 > Android' 카테고리의 다른 글
Circular Progress bar 구현하기 (0) | 2021.06.15 |
---|---|
Recycler View에 초간단 Paging 라이브러리 적용하기 (0) | 2021.06.09 |
Firebase로 안드로이드 앱 테스트용으로 배포하는 방법 (0) | 2021.06.01 |
Android FullScreen을 Kotlin으로 구현하는 꿀팁 (3) | 2021.04.27 |
안드로이드 APK 초보자도 3분이면 가능한 방법 (0) | 2021.04.10 |