최종 업데이트 : 2022-03-15 09:47:35 +0900
안드로이드 Theme 변경하기
Theme
은 우리나라에서는테마
라고 부르고 영어권에서는 띰? 이라고 부른다.- theme은 각각의 뷰 뿐만 아니라 앱, 액티비티, 뷰 계층에 적용되는 스타일의 집합이다.
- 하위 뷰에도 동일한 스타일이 적용되며 뷰가 아닌 상태바, 윈도우 백그라운드 등에도 적용된다.
- theme을 적용하는 이유는 시스템에 일관성 있는 디자인을 보여주기 위함이다.
- 테마의 색상을 변경할 때 Color Tool를 참고하여 수정할수도 있다.
내가 만드는 것보다 Material 팀에서 제공해주는걸 이용하는게 심적으로 편할 것 같다.
현재 앱의 Theme 확인하기
app -> res -> values -> themes.xml
에 들어가면 현재 theme의 색상들을 볼 수 있다.
1
<style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
- 위 xml코드의 의미는 이 theme의 이름은
Theme.Example
이며Example
은 대게 앱의 이름을 나타낸다. theme
에서는 클래스와 동일하게 상속 구조를 가지고 있다. 따라서DarkActionBar
를 상속받아 하위 theme에서 필요한 부분을 재구현하고 구현하지 않은 부분은 상위 theme을 이용하게 된다.예시로 아래 코드는 상위
DarkActionBar
의colorPrimary
를 재정의해주고 있는 것이다.1
<item name="colorPrimary">@color/purple_500</item>
현재 앱 테마 변경하기
Color Tool 사이트를 참고하여 나는 정열적인 빨간색과 핑크핑크를 선택해서 아래와 같이 적용했다.
- colors.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#FF6200EE</color> <color name="purple_700">#FF3700B3</color> <color name="teal_200">#FF03DAC5</color> <color name="teal_700">#FF018786</color> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> <color name="red">#FFD50000</color> <color name="red_light">#FFFF5131</color> <color name="red_dark">#FF9B0000</color> <color name="pink">#FFF48FB1</color> <color name="pink_light">#FFFFC1E3</color> <color name="pink_dark">#FFBF5F82</color> </resources>
- themes.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/red</item> <item name="colorPrimaryVariant">@color/red_dark</item> <item name="colorOnPrimary">@color/white</item> <!-- Secondary brand color. --> <item name="colorSecondary">@color/pink</item> <item name="colorSecondaryVariant">@color/pink_dark</item> <item name="colorOnSecondary">@color/black</item> <!-- Status bar color. --> <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> </style> </resources>
다크테마 적용하기
다크테마에서는 light에서 설정한 색보다 밝은 색을 사용한다고 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.Example" parent="Theme.MaterialComponents.DayNight. DarkActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/red</item> <item name="colorPrimaryVariant">@color/red_light</item> <item name="colorOnPrimary">@color/black</item> <!-- Secondary brand color. --> <item name="colorSecondary">@color/pink_light</item> <item name="colorSecondaryVariant">@color/pink_light</item> <item name="colorOnSecondary">@color/black</item> <!-- Status bar color. --> <item name="android:statusBarColor" tools:targetApi="l">?attr/ colorPrimaryVariant</item> <!-- Customize your theme here. --> </style> </resources>
- Android 9.0 (API LEVEL 29) 이상부터 사용할 수 있다.
app -> res -> values -> themes.xml(night)
또는app -> res -> values-night -> themes.xml
에서 찾을 수 있다.- 핸드폰에서 설정을 해서 봐도 되지만
activity_main.xml
의 디자인 모드에서 Night로 바꿔 확인해볼 수 있다. (초승달같은 모양)
[참고]
- https://developer.android.com/codelabs/basic-android-kotlin-training-change-app-theme
Comments powered by Disqus.