안녕하세요~ 챠니입니다! :)
오늘은 상태바 배경 및 아이콘 색상 변경방법에 대해서 알아보도록 하겠습니다~!
특별히 이번에는 저번에 작성된 글에 추가되어!!
Android R(30)이상에서 대응하는 방법도 추가되었습니다.
이렇게 말하면... 이상하지만
최근 Android UI가 아이폰처럼 상단바를 자유롭게 사용할 수 있는 것을 기본적으로 제공하고 있기도 하죠?? ㅎㅎ
긴 이야기는 여기서 접어두고.. 바로 코드로 제시하겠습니다 ^^
상태바 배경 및 아이콘 색상 변경방법 (Android 30(R) 이상 대응 추가)
Android 30(R)을 기준으로 구분을 하여 각각 상태바의 배경 및 아이콘색상을 지정하는 코드입니다.
상태바 배경은 color로 자유롭게 가능하지만
상태바 아이콘은 흰색 or 검정만 가능하시다는부분은 꼭 기억해주세요!
window.apply {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
// 상태바 배경
statusBarColor = ContextCompat.getColor(this@MainActivity, R.color.black)
// 상태바 아이콘
insetsController?.setSystemBarsAppearance(
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, //0: 흰색, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS: 어두운색
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
)
} else {
//상태바
statusBarColor = Color.WHITE
//상태바 아이콘(true: 검정 / false: 흰색)
WindowInsetsControllerCompat(this, this.decorView).isAppearanceLightStatusBars = true
}
}
// 시스템 창(insets) 처리를 해제하여 앱 UI가 상태바 영역까지 확장되도록 설정
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// window.setDecorFitsSystemWindows(false)
// } else {
// // Android 10 이하 버전의 경우
// WindowCompat.setDecorFitsSystemWindows(window, false)
// }
적용모습
저는 지금 마퀴(marquee)기능을 작업하고 있었는데요~
위에서 제시한것처럼 다음과 같이 설정하여 사용중입니다.
상태바 배경: 검정
상태바 색상: 검정
이렇게 적용하면 상태바에 아무것도없는 검정으로 보이게 됩니다!
물론 아래의 코드처럼 UI를 상태바까지 늘릴 수 있겠지만, 제가 구현하는것은 그렇게까지는 아닌것 같아 상태바를 살려두고 구현하였습니다~!
// 시스템 창(insets) 처리를 해제하여 앱 UI가 상태바 영역까지 확장되도록 설정
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false)
} else {
// Android 10 이하 버전의 경우
WindowCompat.setDecorFitsSystemWindows(window, false)
}
끝!
질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!
응원의 댓글은 저에게 큰 힘이 된답니다! :)
즐거운 하루되세요!
깃허브 보러 놀러오세요 👇 (맞팔환영)
https://github.com/younminchan
younminchan - Overview
•🇰🇷/👨🏻💻/🖥/⚽️/🎤/🥁/🏃♂️/🚴♂️/🏄🏻♂️/🤟 •TechBlog⬇️ •안드로이드 4년차 개발자 https://minchanyoun.tistory.com - younminchan
github.com