Android
DayNight 테마 (AppCompat v23.2 / API 14+)
수색…
앱에 DayNight 테마 추가하기
DayNight 테마는 하루의 시간과 기기의 마지막으로 알려진 위치를 기반으로 색상 체계를 전환하는 멋진 기능을 앱에 제공합니다.
styles.xml
다음을 추가하십시오.
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
낮 테마 테마 전환 기능을 추가하기 위해 확장 할 수있는 테마는 다음과 같습니다.
-
"Theme.AppCompat.DayNight"
-
"Theme.AppCompat.DayNight.NoActionBar"
-
"Theme.AppCompat.DayNight.DarkActionBar"
colorPrimary
, colorPrimaryDark
및 colorAccent
외에도 전환하려는 다른 색상 (예 : textColorPrimary
또는 textColorSecondary
추가 할 수도 있습니다. 이 style
에도 앱의 맞춤 색상을 추가 할 수 있습니다.
테마를 작업으로 전환하려면 res/values
디렉토리에 default colors.xml
을 정의하고 res/values-night
디렉토리에 다른 colors.xml
을 정의하고 주야간 색상을 적절히 정의해야합니다.
테마를 전환하려면 Java 코드에서 AppCompatDelegate.setDefaultNightMode(int)
메소드를 호출하십시오. (이것은 하나의 액티비티 또는 프래그먼트가 아닌 전체 앱의 색 구성표를 변경합니다.) 예를 들면 다음과 같습니다.
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
선택에 따라 다음 세 가지 중 하나를 통과 할 수 있습니다.
-
AppCompatDelegate.MODE_NIGHT_NO
: 앱의 기본 테마를 설정하고res/values
디렉토리에 정의 된 색상을 사용합니다. 이 주제에 밝은 색상을 사용하는 것이 좋습니다. -
AppCompatDelegate.MODE_NIGHT_YES
: 앱의 야간 테마를 설정하고res/values-night
디렉토리에 정의 된 색상을 사용합니다. 이 테마에는 어두운 색상을 사용하는 것이 좋습니다. -
AppCompatDelegate.MODE_NIGHT_AUTO
:이 앱은 하루 중 시간대와values
및values-night
정의한 색상 (values-night
디렉토리)에 따라 앱의 색상을 자동으로 전환합니다.
getDefaultNightMode()
메서드를 사용하여 현재 야간 모드 상태를 가져올 수도 있습니다. 예 :
int modeType = AppCompatDelegate.getDefaultNightMode();
그러나 앱을 죽이고 다시 열면 테마 전환이 지속되지 않습니다. 그렇게하면 테마가 기본값 인 AppCompatDelegate.MODE_NIGHT_AUTO
로 다시 전환됩니다. 테마 전환을 지속하려면 공유 환경 설정에 값을 저장하고 응용 프로그램을 삭제 한 후에 앱을 열 때마다 저장된 값을로드해야합니다.