Aplikacje adaptacyjne obsługują wyświetlacze wszystkich rozmiarów: cały ekran urządzenia, okna o zmiennym rozmiarze w trybie wielu okien, orientację pionową i poziomą oraz złożone i rozłożone wyświetlacze urządzeń składanych.
Krótka lista ustawień konfiguracji i interfejsów API umożliwia tworzenie aplikacji adaptacyjnych. Niektóre przestarzałe ustawienia i interfejsy API są jednak 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 manifestu <activity> i
<application> włącza lub wyłącza tryb wielu okien
na Androidzie 11 (poziom 30 interfejsu API) i starszych. Na Androidzie 12 (poziom 31 interfejsu API) i nowszych duże ekrany obsługują tryb wielu okien niezależnie od tego atrybutu. Więcej informacji znajdziesz w artykule Obsługa trybu wielu okien.
Zezwól aplikacji na udział w scenariuszach trybu wielu okien i wielozadaniowości, aby 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 nie musisz tego robić – na Androidzie 7.0 (poziom 24 interfejsu API) i nowszych ta wartość jest domyślnie ustawiona na true.
Nie ustawiaj resizeableActivity="false" na żadnym poziomie interfejsu API. Nie wykluczaj aplikacji z przypadków użycia, które obejmują tryb wielu okien.
Orientacja
Aplikacje adaptacyjne obsługują orientację pionową i poziomą niezależnie od rozmiaru wyświetlacza lub trybu okienkowego.
Ustawienie manifestu screenOrientation ogranicza orientację aktywności.
Usuń ustawienie screenOrientation z manifestu aplikacji.
Blokowanie orientacji aplikacji nie uniemożliwia zmiany rozmiaru okna. Rozmiar aplikacji zmienia się, gdy przechodzą one do trybu wielu okien, gdy urządzenie jest składane lub rozkładane albo gdy zmieniany jest rozmiar okna typu desktop. Aplikacja musi obsługiwać zmiany rozmiaru okna niezależnie od ustawienia atrybutu screenOrientation.
Nie ograniczaj orientacji aktywności. Aplikacje, które blokują orientację, są wyświetlane w czarnych ramkach na urządzeniach z dużym ekranem i w niezgodnych rozmiarach okien.
W przypadku aplikacji wyświetlanych w czarnych ramkach zmniejsza się wykrywalność w Google Play na tabletach, urządzeniach składanych i urządzeniach z ChromeOS.
Format obrazu
Rozmiary ekranu i okna są różne, podobnie jak ich formaty obrazu – od wysokich i wąskich po kwadratowe oraz krótkie i szerokie.
Ustawienia manifestu minAspectRatio i maxAspectRatio ograniczają
format obrazu aplikacji do wartości zakodowanych na stałe.
Dostosuj aplikację do wyświetlacza niezależnie od wymiarów względnych.
Usuń ustawienia minAspectRatio i maxAspectRatio z manifestu aplikacji. Możesz też upewnić się, że aplikacja ma zmienny rozmiar, a format obrazu będzie się dostosowywać automatycznie
(patrz sekcja Możliwość zmiany rozmiaru).
Nie próbuj kontrolować wymiarów względnych aplikacji. Jeśli aplikacja jest uruchamiana na ekranie lub w oknie o formacie obrazu niezgodnym z formatem obrazu aplikacji, jest ona wyświetlana w czarnych ramkach.
Na Androidzie 14 (poziom 30 interfejsu API) i nowszych użytkownicy mogą zastąpić format obrazu aplikacji, aby rozszerzyć aplikacje wyświetlane w czarnych ramkach i wypełnić dostępny obszar wyświetlania. Zobacz Tryb zgodności urządzeń.
Rozmiar okna
Optymalizacja układów pod kątem różnych rozmiarów wyświetlacza jest podstawową zasadą projektowania adaptacyjnego. Aplikacje adaptacyjne koncentrują się na rozmiarze okna aplikacji, a nie na rozmiarze ekranu urządzenia. Gdy aplikacja jest wyświetlana na pełnym ekranie, okno aplikacji jest ekranem urządzenia.
Klasy rozmiarów okien umożliwiają systematyczne określanie i kategoryzowanie rozmiaru okna aplikacji. Dostosuj aplikację, zmieniając układy w miarę zmiany klasy rozmiaru okna aplikacji.
Określ rozmiar okna aplikacji na podstawie klas rozmiarów okien.
Aby określić klasę rozmiaru okna, użyj funkcji currentWindowAdaptiveInfo() najwyższego poziomu z biblioteki Compose Material 3 Adaptive. Więcej
informacji znajdziesz w artykule Tworzenie aplikacji adaptacyjnych.
Nie ignoruj przydatności definicji klas rozmiarów okien i wbudowanych interfejsów API. Nie używaj wycofanych interfejsów API do obliczania rozmiaru okna.
Wycofane interfejsy API
Starsze interfejsy API platformy nie mierzą prawidłowo okna aplikacji. Niektóre mierzą ekran urządzenia, a inne wykluczają dekoracje systemowe.
Aby uzyskać rozmiar okna aplikacji, użyj WindowManager#getCurrentWindowMetrics() i
WindowMetrics#getBounds(). Aby uzyskać gęstość wyświetlacza, użyj
WindowMetrics#getDensity().
Nie używaj tych wycofanych Display interfejsów API do określania rozmiaru okna:
getSize(): wycofany w Androidzie 11 (poziom 30 interfejsu API)getMetrics(): wycofany w Androidzie 11 (poziom 30 interfejsu API)getRealSize(): wycofany w Androidzie 12 (poziom 31 interfejsu API)getRealMetrics(): wycofany w Androidzie 12 (poziom 31 interfejsu API)
Utwórz
Jetpack Compose jest przeznaczony do tworzenia adaptacyjnych interfejsów. Bez XML, plików układu i kwalifikatorów zasobów. Tylko bezstanowe elementy kompozycyjne oparte na Kotlinie
takie jak Column, Row i Box, które opisują interfejs, oraz modyfikatory
takie jak offset, padding i size, które dodają zachowanie do elementów interfejsu.
Twórz za pomocą Compose. Bądź na bieżąco z najnowszymi funkcjami i wersjami.
Nie polegaj na przestarzałej technologii. Nie pozwól, aby Twoja aplikacja stała się przestarzała.
Biblioteka Compose Material 3 Adaptive
Biblioteka Compose Material 3 Adaptive udostępnia komponenty i interfejsy API, które ułatwiają tworzenie aplikacji adaptacyjnych.
Aby aplikacja była adaptacyjna, użyj tych interfejsów API:
NavigationSuiteScaffold: przełącza się między paskiem nawigacyjnym a panelem nawigacyjnym w zależności od klasy rozmiaru okna aplikacji.ListDetailPaneScaffold: implementuje kanoniczny układ szczegółowej listy. Dostosowuje układ do rozmiaru okna aplikacji.SupportingPaneScaffold: implementuje kanoniczny układ panelu pomocniczego.
Nie wymyślaj koła na nowo. Nie przegap wzrostu produktywności programistów, który zapewniają wszystkie biblioteki Jetpack Compose.
Układy
Użytkownicy oczekują, że aplikacje będą w pełni wykorzystywać dostępną przestrzeń wyświetlania dzięki dodatkowej treści lub ulepszonym elementom sterującym.
Aplikacje adaptacyjne optymalizują układy na podstawie zmian wyświetlacza, w szczególności zmian rozmiaru okna aplikacji lub zmian pozycji urządzenia.
Zmieniaj komponenty interfejsu w miarę zmiany rozmiaru okna, aby wykorzystać dostępną przestrzeń wyświetlania. Na przykład zamień dolny pasek nawigacyjny używany w przypadku kompaktowych rozmiarów okien na pionowy panel nawigacyjny w przypadku średnich i rozszerzonych okien. Zmień położenie okien, aby były dostępne na wszystkich wyświetlaczach.
Uporządkuj treści w panelach, aby umożliwić tworzenie układów wielopanelowych, takich jak lista i szczegóły oraz panel pomocniczy, na potrzeby dynamicznych wyświetlaczy treści.
Jeśli nie używasz paneli treści, nie rozciągaj elementów interfejsu, aby wypełnić dostępną przestrzeń wyświetlania. Długie wiersze tekstu są trudne do odczytania. Rozciągnięte przyciski wyglądają źle. Jeśli używasz Modifier.fillMaxWidth, nie
zakładaj, że jest to odpowiednie zachowanie w przypadku wszystkich rozmiarów wyświetlacza.
Urządzenia wejściowe
Użytkownicy nie tylko korzystają z ekranów dotykowych do interakcji z aplikacjami.
Aplikacje adaptacyjne obsługują zewnętrzne klawiatury, myszy i rysiki, aby zapewnić lepsze wrażenia użytkownika i zwiększyć produktywność użytkowników na urządzeniach wszystkich typów.
Skorzystaj z wbudowanych funkcji platformy Android do nawigacji za pomocą klawiatury i klikania, zaznaczania i przewijania za pomocą myszy lub trackpada. Opublikuj skróty klawiszowe aplikacji w Informacjach o skrótach klawiszowych.
Użyj biblioteki Jetpack Material 3, aby umożliwić użytkownikom pisanie w dowolnym
TextField komponencie za pomocą rysika.
Nie uniemożliwiaj korzystania z alternatywnych metod wprowadzania. Nie wprowadzaj problemów z ułatwieniami dostępu.
Podsumowanie
- Twórz aplikację za pomocą Compose i biblioteki Material 3 Adaptive.
- Układy podstawowe oparte na klasach rozmiarów okien.
- Twórz układy wielopanelowe.
- Zezwalaj na zmianę rozmiaru aplikacji.
- Nigdy nie blokuj orientacji aktywności.
- Nie ograniczaj formatu obrazu.
- Obsługuj inne metody wprowadzania niż dotyk.
- Unikaj wycofanych interfejsów API.
✓ Zrób to, czego oczekują użytkownicy: zoptymalizuj aplikację pod kątem różnorodności urządzeń, z których ludzie korzystają na co dzień.
✗ Nie czekaj. Wypróbuj już dzisiaj.