Android Q의 다크 모드에 대해 지금까지 우리가 알고 있는 모든 것

Google의 다음 Android 버전인 Android 10 Q에는 시스템 전체에 어두운 모드가 포함됩니다. Android Q의 앱은 어두운 테마를 어떻게 처리하나요?

우리의 첫 번째 게시물 우리가 획득한 개발 중인 Android Q 빌드에서 발견한 변경 사항을 자세히 설명하면서 모두가 열광하는 다크 모드에 대해 간략하게 이야기했습니다. 요약하자면, Android Q에 내장된 Google의 다크 모드는 디스플레이 설정의 새로운 "다크 모드" 옵션을 통해 활성화할 수 있습니다. 다크 모드는 항상 꺼지거나, 항상 켜져 있거나, 밤에는 자동으로 활성화되고 아침에는 비활성화될 수 있습니다. 다크 모드는 SystemUI(볼륨 패널, 전원 메뉴, 빠른 설정 패널, 알림), 설정 앱 및 프레임워크(악센트 색상 등)를 테마로 합니다.

위: Google Pixel 3 XL의 Android Q 다크 모드. 아래: Google Pixel 2 XL의 Android Pie에 있는 밝은 테마.

그러나 Google은 시스템 요소가 어두운 테마가 되는 것을 원하지 않습니다. 또한 사용자가 스위치를 켰을 때 자사의 모든 앱이 다크 모드를 지원하는지 확인하기 위해 노력하고 있습니다. 다음과 같은 Google 앱 메시지, 핸드폰, 콘택트 렌즈, 소식, 게임을하다, 유튜브, 지도등이 사용자에게 표시되는 어두운 모드 토글로 업데이트되었으며, 다음과 같은 다른 앱도 업데이트되었습니다. 구글 크롬 Google I/O 2019 이전에 여전히 문제를 해결하고 있습니다. Google은 또한 타사 앱 개발자에게 다음을 권장하기 시작했습니다. 어두운 테마를 받아들인다 회사가 배터리 수명에 매우 좋다고 인정했기 때문에 앱에 추가했습니다(적어도 OLED 디스플레이가 장착된 스마트폰에서는).

개발자가 Android Q의 다크 모드를 지원하여 앱을 업데이트할 수 있도록 Google은 모든 앱을 다크 모드로 강제 변경하는 새로운 개발자 옵션을 제공하고 있습니다. 이 옵션은 기본 다크 모드가 없는 모든 앱에 대해 시스템이 올바른 색상을 선택하기 어렵기 때문에 모든 것을 다크 모드로 설정하려는 사용자를 위한 것이 아닙니다. 다행스럽게도 Google은 이미 앱이 다크 모드를 지원할 수 있는 기반을 마련했으며 이미 다크 모드를 지원하는 앱이 많이 있습니다. 앱에 사용자용 다크 모드가 없더라도 Android Q의 다크 모드 재정의 옵션을 활성화하면 괜찮아 보입니다. 비녀장. 다음은 Android Q의 다크 모드 재정의 토글을 사용하여 다크 모드를 강제로 적용할 때 앱이 어떻게 보이는지 보여주는 24개 앱의 스크린샷 모음입니다. 아래에서 보여주듯이 모든 앱이 좋아 보이는 것은 아닙니다.

Android Q에서 다크 모드 구현

API 레벨 8(Android 2.2 Froyo)에서 Google은 -야간 예선 자원을 위해. 앱 개발자는 setNightMode를 사용하여 주야 모드 간에 전환할 수 있습니다. UiMode관리자. 그러나 setNightMode를 사용하려면 기기가 자동차 모드에 있거나 기기가 API 레벨 22 이하인 경우 도킹 모드에 있어야 합니다. AppCompat v23.2 DayNight 구현을 도입하여 Reddit 클라이언트와 같은 앱이 AppCompatDeletegate.setDefaultNightMode()를 사용하여 시간에 따라 낮과 밤 테마 사이를 자동으로 전환할 수 있게 했습니다. API 레벨 28(Android 9 Pie)에서는 MODE_NIGHT_FOLLOW_SYSTEM(setDefaultNightMode()의 기본값)이 설정 --> 개발자 옵션 --> 야간 모드에서 사용자 정의 시스템 설정을 따르도록 했습니다. 구글은 작업 특히 WebView 문제와 같이 "자주 발생하는 문제"와 관련하여 AppCompat의 DayNight API가 개선되었습니다. 마지막으로 Google에서는 야간 모드 감지 그리고 차단된 앱 없이 MODIFY_DAY_NIGHT_MODE Android Q 프레임워크의 서명/특권 권한. 후자의 변경은 앱이 더 이상 시스템 전체의 야간 모드를 수정할 수 없음을 의미하며, 이는 최근 메시지 버그로 인해 Android Pie 사용자에게 혼란을 줄 수 있었습니다.

업데이트: 업데이트 ~로 AndroidX 지원 라이브러리를 사용하면 개발자가 기기가 배터리 절약 모드에 들어갈 때 앱에서 다크 모드를 자동으로 활성화하는 것이 더 쉬워집니다.

Android Q에서 다크 모드 강제 적용

Snapchat, Slack, AOSP 이메일, AOSP 메시징, AOSP 다이얼러 등과 같은 애플리케이션에는 사용자에게 야간 모드로 앱을 사용할 수 있는 방법을 제공하지 않더라도 야간 리소스 한정자가 있습니다. Facebook 및 Instagram과 같이 하드 코딩된 -night 리소스 한정자가 없는 다른 앱은 Android Q의 어두운 테마 재정의가 켜져 있으면 좋아 보일 수도 있고 그렇지 않을 수도 있습니다. 인스타그램은 괜찮아 보이는 반면, 페이스북은 많은 작업이 필요합니다. 테스트 결과 야간 모드 재정의 개발자 옵션은 접근성 설정의 색상 반전과 매우 다릅니다. Google은 Android Q 개발자 미리보기가 출시되는 동안 개발자가 앱의 다크 모드를 만들 수 있도록 이 기능을 제공할 계획입니다. 전진. 하지만 Android Q의 소스 코드가 출시되거나 Google이 이에 대한 문서를 게시할 때까지 이 기능이 어떻게 작동하는지 정확히 알 수 없습니다.

Android Q의 다크 모드 재정의는 WebView를 사용하는 앱에서 가장 손상됩니다.

"에서픽셀 색상 비용" Google의 Chris Banes와 Alan Viverette가 발표한 강연에서 두 사람은 개발자에게 다음과 같은 방법으로 어두운 테마를 구현하도록 권장합니다.

  • AppCompat에서 DayNight API를 사용합니다. Stock 위젯은 야간 모드 변경에 자동으로 반응하며, 앱에 스위치를 추가할 수도 있습니다.
  • getTheme().applyStyle()을 호출하여 런타임에 동적으로 오버레이 테마를 적용합니다. 더 많은 정보는 이전 강연에서 찾아보실 수 있습니다. 여기.
  • colorForeground, colorControlNormal, colorAccent 등과 같은 테마 속성을 사용하도록 앱을 구성합니다.
  • 리소스에 대한 -night 한정자를 추가합니다. -테마 색상 추출이 어려운 리소스에는 야간 한정자를 사용해야 합니다.
  • 반전된 색상 모드(설정 --> 색상 --> 색상 반전)를 활성화하면 앱이 다크 모드에서 어떻게 보이는지 빠르게 확인할 수 있습니다. 색상이 반전된 앱의 스크린샷을 찍고 싶다면 다음 사항에 유의하세요. 색상 반전이 스크린샷에 표시되지 않습니다..

출시 시 Android Q의 다크 모드는 자사 Google 앱으로 확장될 예정이지만, 타사 앱도 빠르게 다크 테마를 앱에 채택할 수 있기를 바랍니다. 또한 사용자가 시스템 전체 설정을 활성화하면 더 많은 앱이 야간 테마로 자동 변경되는 것을 볼 수 있기를 바랍니다. 현재 Android Q의 시스템 전체 다크 모드가 활성화되면 테마를 자동으로 변경하는 유일한 앱은 Google 연락처입니다. 몇 달 후에 Android Q가 출시되면 상황이 어떻게 변할지 지켜보겠습니다. 하지만 이 글을 읽고 있는 모든 개발자는 어두운 면을 받아들이세요!

LineageOS 기여자의 의견 포함 조이 리졸리.