<obsługuje-ekrany>

składnia:
<supports-screens android:resizeable=["true"| "false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>
zawarte w:
<manifest>
description:

Umożliwia określenie rozmiarów ekranu obsługiwanych przez aplikację i włączenie trybu zgodności ekranu w przypadku ekranów większych niż obsługiwane przez aplikację. Pamiętaj, by zawsze używać tego elementu w swojej aplikacji do określania rozmiarów ekranu obsługiwanych przez tę aplikację.

Uwaga: tryb zgodności z ekranem nie jest trybem, w którym aplikacja ma działać. Powoduje to pikselizacja i rozmycie interfejsu z powodu powiększenia. Aby aplikacja dobrze działała na dużych ekranach, zapoznaj się z artykułem Omówienie zgodności ekranu i udostępnij alternatywne układy dostosowane do ekranów o różnych rozmiarach.

Aplikacja „obsługuje” dany rozmiar ekranu, jeśli jej rozmiar jest dostosowywany tak, aby wypełnić cały ekran. Zwykła zmiana rozmiaru stosowana przez system sprawdza się w większości aplikacji. Nie musisz wykonywać żadnych dodatkowych czynności, aby aplikacja działała na ekranach większych niż telefon.

Często jednak warto zoptymalizować interfejs aplikacji pod kątem różnych rozmiarów ekranu przez udostępnienie alternatywnych zasobów układu. Możesz na przykład zmienić układ aktywności na tablecie, w porównaniu z działaniem na słuchawce.

Jeśli jednak aplikacja nie działa dobrze po dostosowaniu rozmiaru do różnych rozmiarów ekranu, możesz użyć atrybutów elementu <supports-screens>, by określić, czy aplikacja ma być wyświetlana tylko na mniejszych ekranach, czy ma skalowany interfejs użytkownika w powiększeniu lub jest „powiększona”, aby zmieścić się na większych ekranach za pomocą trybu zgodności z ekranami systemu.

Jeśli nie projektujesz aplikacji na większe ekrany, a normalna zmiana rozmiaru nie przynosi oczekiwanych rezultatów, tryb zgodności z ekranem skaluje interfejs, emulując normalny rozmiar ekranu i średnią gęstość. Następnie powiększa się, aby wypełniał cały ekran. Pamiętaj, że może to powodować pikselizację i zamazanie interfejsu, dlatego lepiej jest optymalizować go pod kątem dużych ekranów.

Uwaga: w Androidzie 3.2 wprowadzono nowe atrybuty: android:requiresSmallestWidthDp, android:compatibleWidthLimitDp i android:largestWidthLimitDp. Jeśli tworzysz aplikację na Androida 3.2 lub nowszego, użyj tych atrybutów, by zadeklarować obsługę rozmiaru ekranu zamiast atrybutów opartych na ogólnych rozmiarach ekranu.

Informacje o trybie zgodności z ekranem

Tryb zgodności z ekranem jest ostatecznością w przypadku aplikacji, które nie są odpowiednio przystosowane do rozmiarów ekranu. Nie chcesz, aby Twoja aplikacja działała w tym trybie, ponieważ może to powodować niezadowolenie użytkowników. Istnieją 2 wersje trybu zgodności ekranu w zależności od wersji urządzenia, na którym działa aplikacja.

Na urządzeniach z Androidem w wersjach od 1.6 do 3.1 system uruchamia aplikację w oknie „znaczek pocztowy”. Emuluje ekran o rozdzielczości 320 x 480 dp z czarnym obramowaniem wypełniającym pozostały obszar ekranu.

W Androidzie 3.2 i nowszych system rysuje układ tak jak na ekranie o rozdzielczości 320 dp x 480 dp, a potem skaluje go w górę, aby wypełnić ekran. Często powodują one takie artefakty jak rozmycie i pikselizacja w interfejsie.

Więcej informacji o prawidłowej obsłudze różnych rozmiarów ekranu i unikaniu używania trybu zgodności ekranu z aplikacją znajdziesz w artykule Omówienie zgodności ekranu.

atrybuty:
android:resizeable
Wskazuje, czy można zmienić rozmiar aplikacji na ekranach o różnych rozmiarach. Domyślna wartość tego atrybutu to "true". Jeśli zasada ma wartość "false", system uruchamia aplikację w trybie zgodności z ekranem na dużych ekranach.

Ten atrybut został wycofany. Rozwiązanie to zostało wprowadzone, aby ułatwić przejście z Androida 1.5 na 1.6, gdy po raz pierwszy wprowadzono obsługę wielu ekranów. Nie używaj go.

android:smallScreens
Wskazuje, czy aplikacja obsługuje formaty na małym ekranie. Mały ekran to ekran o proporcjach mniejszym niż „normalny” lub tradycyjny ekran HVGA. Aplikacja, która nie obsługuje małych ekranów, nie jest dostępna na urządzeniach z małymi ekranami z usług zewnętrznych (np. Google Play), ponieważ nie ma możliwości, by taka aplikacja działała na mniejszym ekranie. Domyślnie jest to "true".
android:normalScreens
Wskazuje, czy aplikacja obsługuje „normalne” formaty ekranu. Tradycyjnie jest to ekran HVGA o średniej gęstości, ale za normalne są też WQVGA o małej gęstości i WVGA. Domyślna wartość tego atrybutu to "true".
android:largeScreens
Wskazuje, czy aplikacja obsługuje duże formaty ekranu. Duży ekran to ekran znacznie większy od „normalnego” ekranu telefonu. Dlatego jej właściwe wykorzystanie może wymagać zaangażowania po stronie aplikacji, choć może też wymagać zmiany rozmiaru przez system w celu wypełnienia ekranu.

Wartość domyślna tego atrybutu różni się w zależności od wersji, więc lepiej jest zadeklarować go bezpośrednio. Pamiętaj, że ustawienie go na "false" zwykle włącza tryb zgodności z ekranem.

android:xlargeScreens
Wskazuje, czy aplikacja obsługuje „bardzo duże” formaty ekranu. Bardzo duży ekran to ekran, który jest znacznie większy od „dużego” ekranu, np. tabletu lub czegoś jeszcze większego. Prawidłowe użycie tej funkcji może wymagać od aplikacji specjalnej uwagi, ale może też polegać na zmianie rozmiaru przez system w celu wypełnienia ekranu.

Wartość domyślna tego atrybutu różni się w zależności od wersji, więc lepiej jest zadeklarować go bezpośrednio. Pamiętaj, że ustawienie go na "false" zwykle włącza tryb zgodności z ekranem.

Ten atrybut został wprowadzony na poziomie 9 interfejsu API.

android:anyDensity
Wskazuje, czy aplikacja zawiera zasoby dostosowane do dowolnej gęstości ekranu.

W przypadku aplikacji obsługujących Androida 1.6 (poziom interfejsu API 4) lub nowszą wersję to domyślnie wartość "true". Nie ustawiaj wartości "false", chyba że masz absolutną pewność, że jest ona niezbędna do działania aplikacji. Wyłączenie tej funkcji może być konieczne tylko wtedy, gdy aplikacja bezpośrednio obsługuje mapy bitowe. Więcej informacji znajdziesz w artykule Omówienie zgodności ekranu.

android:requiresSmallestWidthDp
Określa minimalną wartość smallestWidth wymaganą przez aplikację. smallestWidth to najkrótszy wymiar przestrzeni ekranu (w jednostkach dp), który musi być dostępny w interfejsie aplikacji. Jest to najkrótszy z dwóch wymiarów ekranu.

Aby urządzenie zostało uznane za zgodne z Twoją aplikacją, jego parametr smallestWidth musi być równy tej wartości lub większy. Zwykle jest to „najmniejsza szerokość” obsługiwana przez układ, niezależnie od bieżącej orientacji ekranu.

Na przykład w przypadku typowego ekranu telefonu smallestWidth – 320 dp, w przypadku tabletu 7-calowego smallestWidth – 600 dp, a w przypadku tabletu 10-calowego – smallestWidth – 720 dp. Są to zwykle wartości smallestWidth, ponieważ stanowią najkrótszy wymiar dostępnego miejsca na ekranie.

Rozmiar, z którym porównywana jest wartość, uwzględnia dekoracje ekranu i interfejs systemu. Jeśli na przykład na wyświetlaczu urządzenia są jakieś trwałe elementy interfejsu, system deklaruje, że smallestWidth urządzenia jest mniejszy niż rzeczywisty rozmiar ekranu, ponieważ są to piksele ekranu niedostępne w Twoim interfejsie.

Jeśli Twoja aplikacja prawidłowo zmienia rozmiar na mniejsze ekrany, do „małego” rozmiaru lub do minimalnej szerokości 320 dp, nie musisz używać tego atrybutu. W przeciwnym razie użyj dla tego atrybutu wartości, która pasuje do najmniejszej wartości używanej w aplikacji dla kwalifikatora o najmniejszej szerokości ekranu (sw<N>dp).

Uwaga: system Android nie zwraca uwagi na ten atrybut, więc nie ma on wpływu na zachowanie aplikacji w czasie działania. Zamiast tego służy do filtrowania aplikacji w usługach takich jak Google Play. Obecnie Google Play nie obsługuje jednak tego atrybutu do filtrowania na Androidzie 3.2. Jeśli Twoja aplikacja nie obsługuje małych ekranów, używaj innych atrybutów rozmiaru.

Ten atrybut został wprowadzony na poziomie API 13.

android:compatibleWidthLimitDp
Ten atrybut umożliwia włączenie trybu zgodności z ekranem jako funkcji opcjonalnej dla użytkownika przez określenie maksymalnej „najmniejszej szerokości ekranu”, do której ma służyć Twoja aplikacja. Jeśli najmniejszy obszar dostępnego ekranu urządzenia jest większy niż wartość tutaj, użytkownicy mogą zainstalować aplikację, ale mogą ją uruchomić w trybie zgodności z ekranem.

Domyślnie tryb zgodności ekranu jest wyłączony i rozmiar układu zmienia się tak, aby mieścił się na ekranie. Na pasku systemu znajduje się przycisk, który pozwala użytkownikowi przełączać tryb zgodności ekranu.

Nie musisz używać tego atrybutu, jeśli Twoja aplikacja jest zgodna ze wszystkimi rozmiarami ekranu, a jej układ odpowiednio zmienia rozmiar.

Uwaga: obecnie tryb zgodności ekranu emuluje tylko ekrany słuchawek o szerokości 320 dp. Dlatego tryb zgodności z ekranem nie jest stosowany, jeśli wartość parametru android:compatibleWidthLimitDp przekracza 320.

Ten atrybut został wprowadzony na poziomie API 13.

android:largestWidthLimitDp
Ten atrybut umożliwia wymuszanie włączenia trybu zgodności z ekranem przez określenie maksymalnej „najmniejszej szerokości ekranu”, do której ma służyć aplikacja. Jeśli najmniejszy obszar dostępnego ekranu urządzenia jest większy niż wartość ustawiona w tym polu, aplikacja działa w trybie zgodności z ekranem i użytkownik nie może go wyłączyć.

Nie musisz używać tego atrybutu, jeśli Twoja aplikacja jest zgodna ze wszystkimi rozmiarami ekranu, a jej układ odpowiednio zmienia rozmiar. W przeciwnym razie najpierw użyj atrybutu android:compatibleWidthLimitDp. Używaj atrybutu android:largestWidthLimitDp tylko wtedy, gdy aplikacja działa nieprawidłowo po dostosowaniu jej rozmiaru do większych ekranów, a jedyny sposób korzystania z aplikacji to tryb zgodności ekranu.

Uwaga: obecnie tryb zgodności ekranu emuluje tylko ekrany słuchawek o szerokości 320 dp. Dlatego tryb zgodności z ekranem nie jest stosowany, jeśli wartość parametru android:largestWidthLimitDp przekracza 320.

Ten atrybut został wprowadzony na poziomie API 13.

wprowadzone w:
Poziom API 4
zobacz też: