Adaptacyjne działania – zalecenia

Aplikacje adaptacyjne obsługują wyświetlacze we wszystkich rozmiarach: cały ekran urządzenia, z możliwością zmiany rozmiaru okna w trybie wielu okien, w orientacji pionowej i poziomej, po złożeniu i rozłożonych wyświetlaczy urządzeń składanych.

Krótka lista ustawień konfiguracji i interfejsów API umożliwia tworzenie aplikacji. Jednak niektóre nieaktualne ustawienia i interfejsy API są niezgodne z aplikacjami adaptacyjnymi i należy ich unikać.

Możliwość zmiany rozmiaru

Aplikacje adaptacyjne obsługują możliwość zmiany rozmiaru aplikacji i tryb wielu okien.

Atrybut resizeableActivity elementów <activity> i <application> Elementy manifestu włącza lub wyłącza tryb wielu okien w Androidzie 11 (poziom interfejsu API 30) i starszych. Na Androidzie 12 (poziom interfejsu API 31) i wyższe, duże ekrany obsługują tryb wielu okien niezależnie . Więcej informacji znajdziesz w artykule Obsługa trybu wielu okien.

✓ Tak

Włącz w aplikacji możliwość udziału w trybach wielozadaniowości w trybie wielu okien dla: zwiększyć produktywność i zadowolenie użytkowników.

Ustaw resizeableActivity="true", jeśli aplikacja jest kierowana na poziomy interfejsu API niższe niż 24. w przeciwnym razie – domyślnie jest to true w Androidzie 7.0 (interfejs API na poziomie 24) i wyższym.

✗ Nie

Nie ustawiaj zasady resizeableActivity="false" dla żadnego poziomu interfejsu API. Nie wykluczaj swojej aplikacji z przypadków użycia trybu wielu okien.

Orientacja

Aplikacje adaptacyjne obsługują orientację pionową i poziomą niezależnie od wyświetlacza rozmiaru lub trybu okna.

Ustawienie pliku manifestu screenOrientation ogranicza orientację aktywności.

✓ Tak

Usuń ustawienie screenOrientation z manifestu aplikacji.

Zablokowanie orientacji aplikacji nie zapobiega zmianom rozmiaru okna. Aplikacje są zmienia się po przejściu w tryb wielu okien, gdy urządzenie jest złożone lub rozłożone, lub gdy rozmiar dowolnego okna jest zmieniany. Aplikacja musi obsługiwać zmiany w oknie rozmiaru niezależnie od ustawienia atrybutu screenOrientation.

✗ Nie

Nie ograniczaj orientacji aktywności. Aplikacje, które blokują orientację, mają poziome pasy na urządzeniach z dużymi ekranami i niezgodne rozmiary okien.

Aplikacje w formacie letterbox są rzadziej wykrywane w Google Play przez na tabletach, urządzeniach składanych i urządzeniach z ChromeOS.

Format obrazu

Ekrany i okna mają różne formaty obrazu – od wąskiego do kwadratowego, krótkiego i szerokiego.

Ustawienia pliku manifestu minAspectRatio i maxAspectRatio ograniczają formatu obrazu do wartości zakodowanych na stałe.

✓ Tak

Dostosuj aplikację, aby pasowała do wyświetlacza niezależnie od jej wymiarów.

Usuń z aplikacji ustawienia minAspectRatio i maxAspectRatio pliku manifestu. Możesz też sprawdzić, czy można zmienić rozmiar aplikacji i zadbać o odpowiedni format obrazu (zobacz sekcję Możliwość zmiany rozmiaru).

✗ Nie

Nie próbuj kontrolować względnych wymiarów aplikacji. Jeśli Twoja aplikacja działa na na ekranie lub w oknie o współczynniku proporcji niezgodnym z obrazu aplikacji, aplikacja jest wyświetlana z czarnymi pasami.

Na Androidzie 14 (poziom interfejsu API 34) i nowszym użytkownicy mogą zastąpić współczynnik proporcji aplikacji które rozwijają aplikacje z czarnymi pasami i wypełniają cały dostępny obszar wyświetlania. Zobacz urządzenie trybu zgodności.

Rozmiar okna

Optymalizowanie układów pod kątem różnych rozmiarów wyświetlaczy to główna zasada adaptacyjną. Aplikacje adaptacyjne skupiają się na rozmiarze okna aplikacji, a nie na urządzeniu rozmiaru ekranu. Gdy aplikacja jest pełna, oknem aplikacji jest ekran urządzenia.

Klasy rozmiaru okna umożliwiają systematyczne określanie i kategoryzowanie rozmiaru okna aplikacji. Dostosuj aplikację, zmieniając układy jako okno klasa rozmiaru Twojej aplikacji.

✓ Tak

Oceń rozmiar okna aplikacji na podstawie klas rozmiaru okna.

Aby określić klasę rozmiaru okna, użyj funkcji currentWindowAdaptiveInfo() funkcji najwyższego poziomu w bibliotece adaptacyjnej Compose Material 3. Więcej Więcej informacji znajdziesz w artykule o tworzeniu aplikacji adaptacyjnych.

✗ Nie

Nie ignoruj przydatności definicji klas rozmiaru okna i z wbudowanymi interfejsami API. Nie używaj wycofanych interfejsów API do obliczania rozmiaru okna.

Wycofane interfejsy API

Starsze interfejsy API platform nie mierzą prawidłowo okna aplikacji. niektórzy mierzą ekranu urządzenia, niektóre nie są ozdobione elementami systemu.

✓ Tak

Używaj WindowManager#getCurrentWindowMetrics() oraz WindowMetrics#getBounds(), aby poznać rozmiar okna aplikacji. Używaj WindowMetrics#getDensity(), aby uzyskać gęstość wyświetlania.

✗ Nie

Nie używaj tych wycofanych interfejsów API Display do określania rozmiaru okna:

  • getSize(): wycofane w Androidzie 11 (poziom interfejsu API 30)
  • getMetrics(): wycofane w Androidzie 11 (poziom interfejsu API 30)
  • getRealSize(): wycofane w Androidzie 12 (poziom interfejsu API 31)
  • getRealMetrics(): wycofane w Androidzie 12 (poziom interfejsu API 31)

Compose

Aplikacja Jetpack Compose została zaprojektowana z myślą o adaptacyjnym tworzeniu interfejsu użytkownika. Brak kodu XML, układu bez kwalifikatorów zasobów. Tylko bezstanowe kompozycje oparte na Kotlin np. Column, Row i Box, które opisują Twój interfejs, oraz modyfikatory np. offset, padding i size, które zwiększają wygodę interfejsu. .

✓ Tak

Kompiluj za pomocą funkcji tworzenia wiadomości. Bądź na bieżąco z najnowszymi funkcjami i wersjami.

✗ Nie

Nie korzystaj z przestarzałej technologii. Nie pozwól, by Twoja aplikacja stała się przestarzała.

Biblioteka adaptacyjna Compose Material 3

Biblioteka Compose Material 3 Adaptive zawiera komponenty i interfejsy API, ułatwiają tworzenie aplikacji adaptacyjnych.

✓ Tak

Aby skonfigurować adaptacyjną aplikację, użyj tych interfejsów API:

  • NavigationSuiteScaffold: umożliwia przełączanie się między paskiem nawigacyjnym a usługą w zależności od klasy rozmiaru okna aplikacji.
  • ListDetailPaneScaffold: implementuje układ kanoniczny szczegółów listy. Dostosowuje układ do rozmiaru okna aplikacji.
  • SupportingPaneScaffold: implementuje panel pomocniczy jako kanoniczny. układ.
✗ Nie

Nie wymyślaj koła na nowo. Nie przegap możliwości zwiększenia produktywności programistów dostępne we wszystkich bibliotekach Jetpack Compose.

Układy

Użytkownicy oczekują, że aplikacje w pełni wykorzystają miejsce na ekranie za pomocą dodatkowych funkcji treści i udoskonalonych mechanizmów kontroli.

Aplikacje adaptacyjne optymalizują układy pod kątem zmian na wyświetlaczu, zmiany rozmiaru okna aplikacji lub stanu urządzenia.

✓ Tak

Zmieniaj komponenty interfejsu wraz ze zmianą rozmiaru okna, aby korzystać z dostępnych do przestrzeni reklamowej. Możesz na przykład zamienić dolny pasek nawigacyjny na kompaktowy rozmiarów okien w pionowej kolumnie nawigacyjnej w średnich i rozwiniętych oknach. Zmień położenie okien, tak aby były dostępne na wszystkich ekranach.

Możesz porządkować treści w panele, aby korzystać z układów z kilkoma panelami, takich jak szczegóły listy i panel pomocniczy wyświetlania zawartości dynamicznej.

.
✓ Zrobienie: lista i szczegóły zadań uporządkowanych w układzie z 2 panelami.
✗ Nie

Jeśli nie używasz paneli treści, nie rozciągaj elementów interfejsu, aby wypełnić dostępnej przestrzeni reklamowej. Długie wiersze tekstu są trudne do odczytania. Rozciągnięte Przyciski wyglądają kiepsko. Jeśli używasz Modifier.fillMaxWidth, nie Zakładamy, że jest to prawidłowe działanie w przypadku wszystkich rozmiarów wyświetlaczy.

.
Nie:układ rozciągnięty, aby wypełnić rozwijane okno.

Urządzenia wejściowe

Użytkownicy nie tylko korzystają z aplikacji na ekranach dotykowych.

Aplikacje adaptacyjne obsługują zewnętrzne klawiatury, myszy i rysiki, aby zapewnić są wygodniejsze dla użytkowników i pomagają zwiększyć produktywność przy korzystaniu z różnych formatów wszelkiego rodzaju.

✓ Tak

Korzystanie z wbudowanych funkcji platformy Androida do nawigacja po karcie klawiatury oraz klikanie, wybieranie i przewijanie myszą lub trackpadem. Opublikuj skróty klawiszowe aplikacji w Asystencie skrótów klawiszowych,

Użyj biblioteki Material 3 Jetpack, aby umożliwić użytkownikom pisanie w dowolnym TextField za pomocą rysika.

✗ Nie

Nie uniemożliwiaj stosowania alternatywnych metod wprowadzania. Nie wprowadzaj ułatwień dostępu problemów.

Podsumowanie

  • Utwórz aplikację za pomocą Compose i biblioteki Material 3 Adaptive
  • Tworzenie układów na podstawie klas rozmiaru okna
  • Tworzenie układów z wieloma panelami
  • Włączanie zmiany rozmiaru aplikacji
  • Nigdy nie blokuj orientacji aktywności
  • Nie ograniczaj formatu obrazu
  • Obsługa wprowadzania danych innego niż dotyk
  • Unikaj wycofanych interfejsów API

Rób to, czego oczekują użytkownicy: optymalizować aplikacje pod kątem różnych urządzeń, z których użytkownicy korzystają na co dzień.

✗ Nie czekaj. Zacznij już dziś!