Wszystko, co do tej pory wiemy o trybie ciemnym Androida Q

Następna wersja Androida Google, Android 10 Q, będzie zawierać ogólnosystemowy tryb ciemny. Jak aplikacje w Androidzie Q poradzą sobie z ciemnymi motywami?

W naszym pierwszy post Opisując szczegółowo zmiany, które znaleźliśmy w otrzymanej wersji Androida Q w fazie rozwoju, krótko rozmawialiśmy o trybie ciemnym, który wszystkich ekscytuje. Podsumowując, wbudowany tryb ciemny Google w Androidzie Q można włączyć za pomocą nowej opcji „Tryb ciemny” w Ustawieniach wyświetlacza. Tryb ciemny może być zawsze wyłączony, zawsze włączony lub włączany automatycznie w nocy i wyłączany rano. Tryb ciemny motywuje SystemUI (panel głośności, menu zasilania, panel Szybkich ustawień, powiadomienia), aplikację Ustawienia i strukturę (kolor akcentujący itp.).

Powyżej: tryb ciemny w Androidzie Q na Google Pixel 3 XL. Poniżej: Lekki motyw w Androidzie Pie na Google Pixel 2 XL.

Google nie chce jednak, aby elementy systemu miały ciemny motyw. Pracują również nad tym, aby wszystkie ich aplikacje własne obsługiwały tryb ciemny, gdy użytkownik przełączy przełącznik. Aplikacje Google, takie jak

Wiadomości, Telefon, Łączność, Aktualności, Grać w gry, Youtube, Mapyi nie tylko, zostały zaktualizowane dzięki przełącznikom trybu ciemnego skierowanym do użytkownika, podczas gdy inne aplikacje lubią GoogleChrome wciąż rozwiązują wszelkie problemy przed Google I/O 2019. Google zaczęło również zachęcać do tego zewnętrznych twórców aplikacji obejmij ciemne motywy w swoich aplikacjach, ponieważ firma przyznaje, że świetnie wydłużają czas pracy baterii (przynajmniej w smartfonach z wyświetlaczami OLED).

Aby pomóc programistom aktualizować swoje aplikacje z obsługą trybu ciemnego Androida Q, Google udostępnia nową opcję programisty, która wydaje się wymuszać na wszystkich aplikacjach przejście do trybu ciemnego. Ta opcja nie jest przeznaczona dla użytkowników, którzy chcą przyciemnić wszystkie rzeczy, ponieważ systemowi trudno jest wybrać odpowiednie kolory dla wszystkich aplikacji, które nie mają natywnego trybu ciemnego. Na szczęście Google położył już podwaliny pod aplikacje obsługujące tryby ciemne i istnieje już wiele aplikacji, które to umożliwiają wygląda dobrze z włączoną opcją zastępowania trybu ciemnego w Androidzie Q, nawet jeśli aplikacja nie ma trybu ciemnego skierowanego do użytkownika przełącznik. Oto zbiór zrzutów ekranu z 24 różnych aplikacji pokazujących, jak wyglądają, gdy narzucono im tryb ciemny za pomocą przełącznika zastępowania trybu ciemnego w Androidzie Q. Nie każda aplikacja będzie wyglądać tak dobrze, co pokażę poniżej.

Implementacja trybu ciemnego w Androidzie Q

W poziomie API 8 (Android 2.2 Froyo) Google wprowadziło -nocne kwalifikacje dla zasobów. Twórcy aplikacji mogą przełączać się między trybem dziennym i nocnym za pomocą setNightMode in Menedżer UiMode. Jednak setNightMode wymaga, aby urządzenie znajdowało się w trybie samochodowym lub w trybie zadokowanym, jeśli urządzenie ma poziom interfejsu API 22 lub niższy. Aplikacja Compat v23.2 przyniosło implementację DayNight, umożliwiając aplikacjom takim jak klienci Reddit automatyczne przełączanie między motywami dziennymi i nocnymi w zależności od pory dnia za pomocą AppCompatDeletegate.setDefaultNightMode(). Poziom API 28 (Android 9 Pie) sprawił, że MODE_NIGHT_FOLLOW_SYSTEM (domyślna wartość setDefaultNightMode()) jest zgodna ze zdefiniowanymi przez użytkownika ustawieniami systemowymi w Ustawieniach --> Opcje programisty --> Tryb nocny. Google jest pracować nad ulepszenia interfejsu API DayNight w AppCompat, szczególnie w odniesieniu do „często spotykanych problemów”, takich jak problemy z WebView. Wreszcie Google włączyło tę funkcję wykrywanie trybu nocnego i ma zablokowane aplikacje bez MODIFY_DAY_NIGHT_MODE podpis/uprzywilejowane uprawnienia w ramach Androida Q. Ta ostatnia zmiana oznacza, że ​​aplikacje nie mogą już modyfikować ogólnosystemowego trybu nocnego, co spowodowało, że niedawny błąd Wiadomości zmylił użytkowników Androida Pie.

Aktualizacja: Jakiś aktualizacja do AndroidX support ułatwi programistom automatyczne włączanie trybów ciemnych w swoich aplikacjach, gdy urządzenie przejdzie w tryb oszczędzania baterii.

Wymuszanie trybu ciemnego w Androidzie Q

Aplikacje takie jak Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer i wiele innych mają kwalifikatory zasobów -night, nawet jeśli nie zapewniają użytkownikowi możliwości korzystania z aplikacji w trybie nocnym. Inne aplikacje, które nie mają zakodowanych na stałe kwalifikatorów zasobów -night, takie jak Facebook i Instagram, mogą, ale nie muszą, wyglądać dobrze po włączeniu ciemnego motywu zastępowania Androida Q. Instagram wygląda dobrze, natomiast Facebook wymaga dużo pracy. Z moich testów wynika, że ​​zastąpienie opcji programisty w trybie nocnym bardzo różni się od odwrócenia kolorów w Ustawieniach dostępności – być może Google zamierza wprowadzić tę funkcję, aby pomóc programistom w tworzeniu ciemnych trybów dla swoich aplikacji, podczas gdy w wersji zapoznawczej dla programistów Androida Q jest to możliwe bieżący. Nie dowiemy się jednak dokładnie, jak działa ta funkcja, dopóki nie zostanie udostępniony kod źródłowy Androida Q lub Google nie opublikuje jego dokumentacji.

Zastąpienie trybu ciemnego w Androidzie Q jest najczęściej uszkodzone w aplikacjach korzystających z WebView.

W "Koszt koloru piksela” prelekcja zaprezentowana przez Chrisa Banesa i Alana Vivette z Google, duet zachęca programistów do wdrażania ciemnych motywów poprzez:

  • Korzystanie z API DayNight w AppCompat. Widżety giełdowe automatycznie reagują na zmiany w trybie nocnym. Możesz też dodać przełącznik w swojej aplikacji.
  • Dynamiczne stosowanie motywów nakładek w czasie wykonywania poprzez wywołanie getTheme().applyStyle(). Więcej informacji można znaleźć w tej wcześniejszej rozmowie Tutaj.
  • Strukturyzacja aplikacji tak, aby opierała się na atrybutach motywu, takich jak colorForeground, colorControlNormal, colorAccent itp.
  • Dodanie kwalifikatorów -night do zasobów. Kwalifikatorów -night należy używać w przypadku zasobów, które mają trudne do wyodrębnienia kolory motywu.
  • Włączenie trybu odwróconych kolorów (Ustawienia --> Kolory --> Odwrócenie kolorów), aby szybko zobaczyć, jak Twoja aplikacja będzie wyglądać w trybie ciemnym. Jeśli chcesz zrobić zrzut ekranu swojej aplikacji z odwróconymi kolorami, pamiętaj, że plik odwrócenie kolorów nie będzie widoczne na zrzucie ekranu.

W momencie premiery tryb ciemny Androida Q zostanie rozszerzony na własne aplikacje Google, ale mamy nadzieję, że aplikacje innych firm szybko zaadoptują ciemne motywy w swoich aplikacjach. Co więcej, mamy nadzieję, że więcej aplikacji automatycznie zmieni motywy na nocne, gdy użytkownik włączy ustawienie ogólnosystemowe. W tej chwili jedyną aplikacją, jaką widziałem, która automatycznie zmienia motywy po włączeniu ogólnosystemowego trybu ciemnego Androida Q, są Kontakty Google. Zobaczymy, jak sytuacja potoczy się za kilka miesięcy, kiedy zostanie wydany Android Q, ale do wszystkich programistów, którzy to czytają: przyjmijcie ciemną stronę!

Przy udziale współpracownika LineageOS Joey'a Rizzoliego.