Aplikacje na Androida działają na urządzeniach różnego rodzaju: telefonach, tabletach, urządzeniach składanych, urządzeniach z ChromeOS, samochodach, telewizorach, a nawet urządzeniach XR. Aby dostosować się do tego zróżnicowanego środowiska, aplikacja powinna obsługiwać wszystkie formaty urządzeń i rozmiary wyświetlaczy.
Android 16 (poziom API 36) umożliwia aplikacjom dostosowywanie się do różnych urządzeń i rozmiarów wyświetlaczy przez zastępowanie ograniczeń aplikacji dotyczących orientacji ekranu, formatu obrazu i możliwości zmiany rozmiaru. Zastąpienia dotyczą urządzeń o najmniejszej szerokości ≥ 600 dp, co oznacza:
- Tablety
- Ekrany wewnętrzne składanych urządzeń z dużym ekranem
- Tryb okien na pulpicie (na wszystkich urządzeniach)
Aplikacje kierowane na interfejs API na poziomie 36 można zmieniać i mogą one wchodzić w tryb wielu okien (odpowiednik resizeableActivity="true"), jeśli najmniejsza szerokość wyświetlacza wynosi co najmniej 600 dp.
Android 16 wymusza spójny model adaptacyjnego projektowania aplikacji, który optymalizuje wrażenia użytkownika, uwzględniając jego preferencje dotyczące orientacji urządzenia, proporcji i rozmiaru wyświetlacza.
Zmiany
W przypadku aplikacji kierowanych na Androida 16 (poziom API 36) na dużych ekranach ignorowane są te atrybuty manifestu i interfejsy API:
| Atrybut lub interfejs API | Ignorowane wartości |
|---|---|
screenOrientation |
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape |
resizeableActivity |
wszystkie |
minAspectRatio |
wszystkie |
maxAspectRatio |
wszystkie |
setRequestedOrientation()getRequestedOrientation() |
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape |
Wyjątki
Wyjątki od zmian w Androidzie 16 obejmują:
Wyświetlacze mniejsze niż sw600dp (większość telefonów, składane telefony z klapką i zewnętrzne wyświetlacze składanych telefonów z dużym ekranem)
Gry oparte na fladze
android:appCategoryOpublikuj grę za pomocą pakietów Android App Bundle i podpisywania aplikacji przez Google Play, aby Google Play mogło zarządzać flagą i automatycznie zapewniać korzyści wynikające z pakietów aplikacji. Zobacz też Omówienie manifestu aplikacji.
Użytkownik wyraża zgodę na domyślne działanie aplikacji w ustawieniach proporcji obrazu
Zrezygnuj
如需停用 API 级别 36 行为,请声明 PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY 清单属性。
如需停用特定活动,请在 <activity> 元素中设置相应属性:
<activity ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</activity>
如需为整个应用停用,请在 <application> 元素中设置该属性:
<application ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</application>
Testy
Aby sprawdzić, czy zmiany w Androidzie 16 mają wpływ na Twoją aplikację, użyj emulatorów z serii Pixel Tablet i Pixel Fold w Android Studio i ustaw wartość targetSdkPreview = "Baklava" w pliku modułu build.gradle aplikacji.
Możesz też użyć platformy zgodności aplikacji na urządzeniach testowych, włączając flagę UNIVERSAL_RESIZABLE_BY_DEFAULT (patrz Narzędzia platformy zgodności).
Testowanie możesz zautomatyzować za pomocą platformy testowej Espresso i interfejsów Jetpack Compose API do testowania.
Przewodnik po implementacji
Aplikacje, które ograniczają orientację urządzenia, format obrazu lub możliwość zmiany rozmiaru aplikacji, mogą mieć problemy z wyświetlaniem na Androidzie 16, np. nakładające się układy. Aby zapewnić optymalne wrażenia użytkownikom telefonów, urządzeń składanych, tabletów, urządzeń z ChromeOS i innych urządzeń, twórz aplikacje, które reagują na zmiany i dostosowują się do nich.
Lista kontrolna gotowości
Skorzystaj z tej listy kontrolnej, aby upewnić się, że Twoja aplikacja jest gotowa na zmiany w Androidzie 16:
- Unikaj rozciągniętych komponentów interfejsu: układy zaprojektowane z myślą o standardowych ekranach telefonów w orientacji pionowej mogą nie pasować do innych formatów obrazu. Na przykład elementy interfejsu, które wypełniają całą szerokość wyświetlacza, mogą być rozciągnięte w orientacji poziomej. Dodaj maksymalną szerokość komponentów, aby uniknąć rozciągania.
- Włącz przewijanie układów: jeśli układy nie są przewijane, użytkownicy mogą nie mieć dostępu do przycisków ani innych elementów interfejsu, które są poza ekranem w orientacji poziomej. Włącz przewijanie układów aplikacji, aby sprawdzić, czy wszystkie treści są dostępne niezależnie od wysokości wyświetlacza.
- Sprawdź zgodność kamery w trybie pionowym i poziomym: podglądy w wizjerze kamery, które zakładają określony format obrazu i orientację względem czujnika kamery, mogą powodować rozciągnięte lub odwrócone podglądy na niezgodnych wyświetlaczach. Sprawdź, czy wizjery obracają się prawidłowo wraz ze zmianą orientacji. Umożliwia dostosowanie wizjerów do formatów interfejsu, które różnią się od formatu czujnika.
- Zachowywanie stanu podczas zmiany rozmiaru okna: usunięcie ograniczeń dotyczących orientacji i proporcji może powodować częste zmiany rozmiaru okna aplikacji w zależności od tego, jak użytkownicy wolą korzystać z aplikacji, np. przez obracanie, składanie lub rozkładanie urządzenia albo zmianę rozmiaru aplikacji w trybie wielu okien lub okien na komputerze. Zmiany konfiguracji, takie jak zmiana orientacji czy rozmiaru okna, powodują ponowne utworzenie aktywności (domyślnie). Aby zapewnić optymalną wygodę użytkowników, zachowaj stan aplikacji, aby zachowywała ona dane (np. wpisane w formularzu) i użytkownicy mogli zachować kontekst.
- Używaj klas rozmiarów okien: obsługuj różne rozmiary okien i proporcje bez dostosowywania do konkretnych urządzeń. Załóż, że rozmiary okien będą się często zmieniać. Użyj klas rozmiaru okna, aby określić wymiary okna, a następnie zastosuj odpowiedni układ adaptacyjny.
- Twórz elastyczne układy: w ramach klas rozmiarów okien elastyczne układy dostosowują się do zmian wymiarów wyświetlacza, aby zawsze tworzyć optymalną prezentację aplikacji.
Praktyczny przewodnik po tworzeniu adaptacyjnych układów w Compose znajdziesz w samouczku Tworzenie adaptacyjnych aplikacji za pomocą Jetpack Compose. Jeśli migrujesz aplikację, która korzysta z widoków, zapoznaj się z artykułem Opracowywanie strategii wdrażania.
Oś czasu
- Android 16 (2025): obsługa wszystkich orientacji i formatów obrazu oraz możliwości zmiany rozmiaru aplikacji to podstawowe funkcje na urządzeniach z dużym ekranem (najmniejsza szerokość ekranu >= 600 dp) w przypadku aplikacji korzystających z interfejsu API na poziomie 36. Deweloperzy mogą jednak zrezygnować z udziału w tym programie.
| Docelowy poziom interfejsu API | Urządzenia, których dotyczy problem | Zezwolenie na rezygnację programisty |
|---|---|---|
| 36 (Android 16) | Urządzenia z dużym ekranem (najmniejsza szerokość ekranu ≥ 600 dp) | Tak |
Terminy kierowania na określone poziomy interfejsu API zależą od sklepu z aplikacjami. Od sierpnia 2026 r. Google Play będzie wymagać, aby aplikacje były kierowane na interfejs API na poziomie 36.
Dodatkowe materiały
- Zmiany w działaniu: aplikacje kierowane na urządzenia z Androidem 16 lub nowszym
- Tworzenie aplikacji adaptacyjnych
- Zalecenia i ograniczenia dotyczące reklam adaptacyjnych