수색…


앱에 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 , colorPrimaryDarkcolorAccent 외에도 전환하려는 다른 색상 (예 : 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 :이 앱은 하루 중 시간대와 valuesvalues-night 정의한 색상 ( values-night 디렉토리)에 따라 앱의 색상을 자동으로 전환합니다.

getDefaultNightMode() 메서드를 사용하여 현재 야간 모드 상태를 가져올 수도 있습니다. 예 :

int modeType = AppCompatDelegate.getDefaultNightMode();

그러나 앱을 죽이고 다시 열면 테마 전환이 지속되지 않습니다. 그렇게하면 테마가 기본값 인 AppCompatDelegate.MODE_NIGHT_AUTO 로 다시 전환됩니다. 테마 전환을 지속하려면 공유 환경 설정에 값을 저장하고 응용 프로그램을 삭제 한 후에 앱을 열 때마다 저장된 값을로드해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow