어둠 교정으로 Android Dark Theme을 간단히 가져오도록 하겠습니다.

6724 단어 AndroidDarkTheme
안녕하세요.저는 asmz, 책임Diverse Advent Calendar 2019의 19일째입니다.
현재 Diverse에서 yyc라는 오래된 사이즈 매칭 서비스를 하는 안드로이드 응용 엔지니어입니다.
이번에는 블로그를 쓸 때 뭔가를 하고 싶은데 개인적으로 관심 있는 안드로이드 10에서 가져온 Dark Theme에 대해 쓰고 싶어요!
(아마도 이 근처에 쓴 것을 정리한 것 같다.)
https://developer.android.com/guide/topics/ui/look-and-feel/darktheme
https://material.io/develop/android/theming/color/
https://material.io/develop/android/theming/dark/

어두운 주제는 뭐가 좋아요?

  • 전원 사용이 상당히 억제됨(단말기에 따라 얼마나 차이가 있는지)
  • 시력이 낮은 사용자, 밝은 빛에 민감한 사용자의 시인성
  • 낮은 밝기(어두움) 환경에서 사용하기 쉬움
  • 등 장점.좋은 일이 많네.나도 어두운 주제를 즐겨 쓴다.

    어떻게 어둠의 테마 상태에서 어둠의 테마 응용 프로그램을 사용합니까?


    Android10(API level29) 이상의 다크 테마 응용 프로그램에서 다크 테마를 사용하려면 다음과 같은 세 가지 방법이 있습니다.
  • 시스템 설정의 Setting->Display->Theme에서 다크 테마 선택
  • 알림 트레이의 빠른 메뉴에서 어둠의 테마 열기
  • Pixel의 경우 배터리 저장 모드로 설정할 때 동시에 어두운 모드로 변경됩니다(다른 OEM 터미널도 아님)
  • 응용 프로그램의 어두운 테마를 어떻게 사용합니까?


    /res/value/styles.xml의 응용 프로그램 전체 테마의 Parent를 어두운 테마에 대응하면 됩니다.
    <style name="AppTheme" parent="Theme.AppCompat.DayNight">
    
    MaterialComponent의 상위 Theme에서도 사용할 수 있습니다.
    
    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
    
    이러한 응용 프로그램의 주제는 시스템 관리 아래의 NightModeFlag와 연결되어 필요에 따라 DarkTheme에 적응합니다!

    참고로 제가 맡은 yyc에서 on을 시도했는데 카드뷰의 배경색만 변경됐어요.웃음거리
    (CardView의 배경색을 지정하지 않았기 때문에 이것만 반영된 것으로 간주됨)

    Theme 및 Style


    Theme와 Style은 조명 테마에만 사용되는 것을 전제로 하드코딩을 하지 않도록 주의해야 한다.(하니까 ↑ 가 된 상태)
    이러한 상황을 피하기 위해 테마 속성을 사용하거나 일반 자원 이외에 야간용 자원을 준비하십시오.
    구글은 야간용 자원을 따로 활용하기보다는 테마 속성을 활용해 관리하는 것을 추천하는 것으로 보인다. 특히 Material Design Components의 Color Theming System이 그렇다.
    Color Theming System은 설정attr/colorSurface?attr/colorOnSurface 등 공통 속성을 통해 Dark/Light의 테마를 따로 설정하지 않아도 방법이 있습니다.
    https://material.io/develop/android/theming/color/
    자세한 내용은 ↑ 속성에 대한 설명을 보십시오.
    Android 공식을 보면 다음과 같은 사항을 주의해야 한다고 적혀 있다.
  • 배경색은 항상 밝은 색이라고 생각한다
  • 하드 인코딩 텍스트 색상
  • 기본 텍스트 색상과 함께 배경색 인코딩
  • 정적 색상을 사용하여 아이콘 로드
    기본적으로'라이트 전제를 하지 않는 Theme의 컬러 디자인'과'하드 코딩 정지'입니다!
    색 이름에서 지정하지 마십시오.
  • 초간단 어둠 테마 대응: 어둠 교정


    하지만 예전부터 응용 프로그램은 그렇게 간단하게 어두운 주제화를 할 수 있다!그렇게 생각 안 하지?그렇게 예쁘게 자르지 않고 화이트, 블랙, 레이아웃을 직접 지정하는 경우도 많다.
    Android 10에서는 일반적인 LightTheme에서 만든 응용 프로그램을 DarkTheme화하는 기능을 강제합니다!
    그 이름도 어둠 교정!(Android 공식 번역에서는 이런 이름입니다)
    어둠 교정은 조명 테마를 해석하는 각 보기로 표시할 때 어둠 테마 색깔로 변하는 시스템이다.
    어둠 교정은 Activity Theme에 android:forceDarkAllowed="true"라고 적으면 된다.Light의Theme의물건을어두운 주제의색상으로바꾸기 때문에AppTheme이DayNight라면적용되지 않으니주의하세요.
    또 암화를 교정하고 싶지 않은 수요도 있을 것 같다.이 경우 android:forceDarkAllowed="false" 뷰에 추가된 요소는 암흑화되지 않습니다.
    겸사겸사 말씀드리지만, 제가 해 보았습니다.

    그거 같아요!예를 들어 카드의 경계선이 보이지 않고 오른쪽 위의 동작 항목의 선택과 아래 바의 색깔이 다르다는 등 불협화음이 있지만 눈을 감아라.(모자이크 사이즈에 관해서는 조금 뒤바뀌었을 뿐이니 구토하지 마세요)

    배경색은 변하지 않았지만'5명이 더 있다'배경색 등이 전혀 달라 색깔이 불편하네요!
    이곳의 배경이 그림이기 때문에 이런 상황에서 전환할 필요가 없는 것 같다.
    https://developer.android.com/guide/topics/resources/providing-resources#AlternativeResources
    이럴 때 필살기는 자원 파일을 차단하는 방법도 있다.drawable-xhdpi, drawable-xxhdpi 등 여러 개의drawable 파일을 준비하는 사람이 많지만 나이트 모드용 자원도 준비할 수 있다.
    대체 자원은 Light 모드에서도 적용되기 때문에 어둠을 교정할 때도 나이트의 대체 자원을 사용한다.
    예를 들어, drawable-xhdpiNight 모드를 준비하려면 drawable-night-xhdpi 디렉토리를 닫습니다.(반대로 컴파일할 때 오류가 발생합니다.)drawable-night-xhdpiNight용 배경, layout-night중 노선에 설정forceDarkAllowed="false"해 색깔과 색깔을 수정해 봤다.

    ← 단지 어둠을 교정하는 대체 자원으로 배경 이미지와 전용 레이아웃을 수정했다 →
    대충 수정했지만 좋았고 다크 모드 같았잖아!
    따라서 어두운 패턴을 교정하면 미묘해지는 화면이 있다면 대체 자원에서 그 화면만 대응하는 방법도 있다.
    글쎄요.value-night 컬러 밤 모드로만 자르는 방법도 있어요!
    저는 개인적으로 예를 들어 개인이 사용하는 응용 프로그램이 시각적 효과에 얽매이지 않는다면 어둠을 교정하는 것도 방법이라고 생각합니다. 이 점을 잘 할 수 있기 때문에 한번 시도해 보겠습니다!

    끝내다


    Dark Theme, 특히 배터리가 약한 저렴한 단말기 등이 이용되는 지역에서는 앞으로 요구되는 기능이다.
    미리 대처하고 해보는 것도 좋지 않겠습니까?내 생각에!

    선전하다


    응, 이번에 이 기사를 쓴 이유가 하나 있어.
    https://droidkaigi.jp/2020/
    Droid Kaigi에서 어두운 주제를 이야기할 테니 잘 부탁드립니다.
    나는 이 말과 중복될 수 있다고 생각하니 너무 사양하지 마세요.

    좋은 웹페이지 즐겨찾기