- składnia:
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource" android:canDisplayOnRemoteDevices=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:colorMode=[ "hdr" | "wideColorGamut"] android:configChanges=["colorMode", "density", "fontScale", "fontWeightAdjustment", "grammaticalGender", "keyboard", "keyboardHidden", "layoutDirection", "locale", "mcc", "mnc", "navigation", "orientation", "screenLayout", "screenSize", "smallestScreenSize", "touchscreen", "uiMode"] android:directBootAware=["true" | "false"] android:documentLaunchMode=["intoExisting" | "always" | "none" | "never"] android:enabled=["true" | "false"] android:enabledOnBackInvokedCallback=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:immersive=["true" | "false"] android:label="string resource" android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance" | "singleInstancePerTask"] android:lockTaskMode=["normal" | "never" | "if_whitelisted" | "always"] android:maxRecents="integer" android:maxAspectRatio="float" android:multiprocess=["true" | "false"] android:name="string" android:noHistory=["true" | "false"] android:parentActivityName="string" android:persistableMode=["persistRootOnly" | "persistAcrossReboots" | "persistNever"] android:permission="string" android:process="string" android:relinquishTaskIdentity=["true" | "false"] android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" | "readOrWrite" | "write"] android:resizeableActivity=["true" | "false"] android:screenOrientation=["unspecified" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape" | "sensorPortrait" | "userLandscape" | "userPortrait" | "sensor" | "fullSensor" | "nosensor" | "user" | "fullUser" | "locked"] android:showForAllUsers=["true" | "false"] android:stateNotNeeded=["true" | "false"] android:supportsPictureInPicture=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] > ... </activity>
- zawarte w:
<application>
- może zawierać:
<intent-filter>
<meta-data>
<layout>
- description:
- Deklaruje aktywność (podklasę
Activity
), która implementuje część wizualnego interfejsu użytkownika aplikacji. Wszystkie działania muszą być reprezentowane przez elementy<activity>
w pliku manifestu. Wszystkie, które nie są tam zadeklarowane, nie są widoczne dla systemu i nigdy nie są uruchamiane. - atrybuty:
android:allowEmbedded
-
Wskazuje, że aktywność może być uruchamiana jako element podrzędny innej aktywności, w szczególności w przypadku, gdy element podrzędny znajduje się w kontenerze, takim jak
Display
należący do innej aktywności. Na przykład aktywności używane do tworzenia niestandardowych powiadomień na Wear deklarują to, aby Wear mogło wyświetlać aktywność w strumieniu kontekstu, który znajduje się w innym procesie.Domyślną wartością tego atrybutu jest
false
. android:allowTaskReparenting
- Czy aktywność może przejść z zadania, które ją rozpoczęło, do zadania, do którego ma największe powinowactwo, gdy to zadanie zostanie w kolejnym kroku wyświetlone. Wartość
"true"
oznacza, że obiekt może się przemieszczać, a wartość"false"
– że pozostaje w miejscu, w którym zostało uruchomione.Jeśli ten atrybut nie jest ustawiony, do aktywności jest stosowana wartość ustawiona przez odpowiedni atrybut
allowTaskReparenting
elementu<application>
. Wartością domyślną jest"false"
.Zwykle, gdy rozpoczyna się aktywność, jest ona powiązana z zadaniem aktywności, która ją rozpoczęła, i pozostanie w niej przez cały czas jej trwania. Za pomocą tego atrybutu możesz wymusić ponowne utworzenie elementu nadrzędnego dla zadania, które ma powiązanie z innym zadaniem, gdy jego bieżące zadanie przestaje się wyświetlać. Zazwyczaj służy to do przenoszenia działań aplikacji do głównego zadania powiązanego z tą aplikacją.
Jeśli np. wiadomość e-mail zawiera link do strony internetowej, kliknięcie tego linku powoduje wyświetlenie aktywności, która może otworzyć tę stronę. Ta aktywność jest definiowana przez aplikację przeglądarki, ale jest uruchamiana w ramach zadania związanego z e-mailem. Jeśli jest ono podrzędne do zadania przeglądarki, wyświetla się, gdy przeglądarka jest aktywna, i nie jest widoczne, gdy aktywne jest zadanie e-mail.
Powiązanie aktywności jest określone przez atrybut
taskAffinity
. Przynależność zadania jest określana na podstawie przynależności jego głównej aktywności. Dlatego z definicji aktywność wyższego poziomu jest zawsze w ramach zadania o tym samym podobieństwie. Działania z trybami uruchamiania"singleTask"
lub"singleInstance"
mogą znajdować się tylko w korzeniach zadania, więc przeniesienie do innego zadania jest możliwe tylko w trybach"standard"
i"singleTop"
. (patrz też atrybutlaunchMode
) android:alwaysRetainTaskState
- Czy stan zadania, w którego ramach wykonywana jest aktywność, jest zawsze utrzymywany przez system.
"true"
, jeśli tak jest, oraz"false"
, jeśli system może w określonych sytuacjach zresetować zadanie do jego początkowego stanu. Wartością domyślną jest"false"
. Ten atrybut ma znaczenie tylko w przypadku głównej aktywności zadania. Jest on ignorowany w przypadku wszystkich innych działań.W pewnych sytuacjach, gdy użytkownik ponownie wybierze zadanie na ekranie głównym, system usuwa wszystkie czynności z poziomu nad zadaniem głównym. Zwykle dzieje się tak, gdy użytkownik nie otwierał zadania przez pewien czas, np. 30 minut.
Jeśli jednak ten atrybut ma wartość
"true"
, użytkownicy zawsze wracają do zadania w jego ostatnim stanie, niezależnie od tego, jak do niego dotrą. Jest to przydatne w przypadku aplikacji takich jak przeglądarka internetowa, w której występuje wiele stanów, np. wiele otwartych kart, których użytkownicy nie chcą utracić. android:autoRemoveFromRecents
- Określa, czy zadania rozpoczęte przez aktywność z tym atrybutem pozostają na ekranie Ostatnie do czasu zakończenia ostatniej aktywności w zadaniu. Jeśli
true
, zadanie zostanie automatycznie usunięte z ekranu Ostatnie. Zastąpi to użycie przez wywołującego wartościFLAG_ACTIVITY_RETAIN_IN_RECENTS
. Musi to być wartość logiczna:"true"
lub"false"
. android:banner
- Obiekt rysowalny zawierający rozszerzony baner graficzny powiązany z elementem. Użyj tagu
<activity>
, aby podać domyślny baner dla określonej aktywności, lub tagu<application>
, aby podać baner dla wszystkich aktywności aplikacji.System używa banera do reprezentowania aplikacji na ekranie głównym Androida TV. Ponieważ baner wyświetla się tylko na ekranie głównym, jest określany tylko przez aplikacje z aktywnościami, które obsługują intencję
CATEGORY_LEANBACK_LAUNCHER
.Ten atrybut jest ustawiany jako odwołanie do zasobu rysowanego zawierającego obraz, np.
"@drawable/banner"
. Brak banera domyślnego.Więcej informacji znajdziesz w sekcji Przygotowanie banera na ekran główny w artykule Pierwsze kroki z aplikacjami na telewizory.
android:canDisplayOnRemoteDevices
-
Wskazuje, czy aktywność może być wyświetlana na urządzeniu zdalnym, na którym może lub nie może być uruchomiony Android. Musi to być wartość logiczna:
"true"
lub"false"
.Domyślną wartością tego atrybutu jest
"true"
. android:clearTaskOnLaunch
- Czy po ponownym uruchomieniu zadania z ekranu głównego wszystkie aktywności zostaną usunięte z zadaniem, z wyjątkiem aktywności sięgającej do korzenia?
"true"
, jeśli zadanie jest zawsze ograniczone do swojej czynności podstawowej, i"false"
w przeciwnym razie. Wartością domyślną jest"false"
. Ten atrybut ma znaczenie tylko w przypadku aktywności, które uruchamiają nowe zadanie – czyli aktywność główną. Jest on ignorowany w przypadku wszystkich innych działań w ramach zadania.Gdy wartość to
"true"
, za każdym razem, gdy użytkownicy rozpoczynają zadanie, są przenoszeni do jego głównej aktywności niezależnie od tego, co robili w ramach tego zadania i niezależnie od tego, czy opuszczają je za pomocą przycisku Wstecz czy Początek. Jeśli wartość to"false"
, zadanie może zostać oczyszczone z działań w niektórych sytuacjach, ale nie zawsze. Więcej informacji znajdziesz w atrybuciealwaysRetainTaskState
.Załóżmy, że użytkownik uruchamia aktywność P z ekranu głównego, a potem przechodzi do aktywności Q. Użytkownik klika kolejno Strona główna i wraca do aktywności P. Zwykle użytkownik widzi aktywność Q, ponieważ to było to, co robił ostatnio w ramach zadania P. Jeśli jednak P ma tę flagę ustawioną na
"true"
, wszystkie aktywności nad nim – w tym przypadku Q – zostaną usunięte, gdy użytkownik uruchomi aktywność P z ekranu głównego. Po powrocie do zadania użytkownik widzi tylko P.Jeśli ten atrybut i
allowTaskReparenting
mają wartość"true"
, wszystkie aktywności, które można ponownie przypisać do rodzica, są przenoszone do zadania, z którym są powiązane. Pozostałe działania są wtedy odrzucane.Ten atrybut jest ignorowany, jeśli argument
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
nie jest ustawiony. android:colorMode
Określa tryb kolorów aktywności. Jeśli jest podana, może mieć wartość
hdr
lubwideColorGamut
.Jeśli
hdr
, żąda, aby aktywność była wyświetlana w wysokim zakresie dynamicznym, o ile urządzenie to obsługuje tę funkcję.Jeśli
wideColorGamut
, żąda, aby aktywność była wyświetlana w trybie szerokiej gamy kolorów na zgodnych urządzeniach. W trybie szerokiej palety barw okno może renderować poza gamąSRGB
, aby wyświetlać bardziej żywe kolory. Jeśli urządzenie nie obsługuje renderowania w szerokiej gamie kolorów, ten atrybut nie ma żadnego wpływu. Więcej informacji o renderowaniu w szerokim zakresie kolorów znajdziesz w artykule Ulepszanie grafiki dzięki treściom w szerokim zakresie kolorów.android:configChanges
- Wyświetla zmiany konfiguracji, które są obsługiwane przez dane działanie. Gdy w czasie działania nastąpi zmiana konfiguracji, aktywność zostanie zamknięta i ponowicie uruchomiona, ale oświadczenie o konfiguracji z tym atrybutem zapobiegnie ponownemu uruchamianiu aktywności. Zamiast tego aktywność pozostaje uruchomiona i jest wywoływana jej metoda
onConfigurationChanged()
.Uwaga: tego atrybutu używaj tylko w szczególnych przypadkach, aby poprawić wydajność i szybkość działania aplikacji. Więcej informacji znajdziesz w artykule Zarządzanie zmianami konfiguracji.
Te ciągi znaków to prawidłowe wartości tego atrybutu. Wiele wartości jest rozdzielanych znakiem
|
, np."locale|navigation|orientation"
.Wartość Opis "colorMode"
możliwości trybu kolorów ekranu (gamut kolorów lub zakres dynamiczny) zostały zmienione;
Uwaga: tryb kolorów, którego aktywność wymaga za pomocą atrybutu
colorMode
lub w czasie działania, różni się od możliwości obsługi różnych trybów kolorów. Aktywność, która zmienia tryb kolorów, nie powoduje zmiany konfiguracji, ponieważ możliwości wyświetlacza w zakresie kolorów nie uległy zmianie."density"
zmiana gęstości wyświetlania, np. gdy użytkownik określi inną skalę wyświetlania lub inny ekran jest teraz aktywny;
Dodano w poziomie interfejsu API 24.
"fontScale"
zmiana współczynnika skalowania czcionki, np. gdy użytkownik wybierze nowy rozmiar czcionki globalnej; "fontWeightAdjustment"
Zmieniła się wartość zwiększenia grubości czcionki. "grammaticalGender"
Zmienił się rodzaj gramatyczny języka. Zobacz GrammaticalInflectionManager
.Dodano w poziomie API 34.
"keyboard"
zmiana typu klawiatury, np. gdy użytkownik podłączy zewnętrzną klawiaturę; "keyboardHidden"
zmiana ułatwień dostępu do klawiatury, np. gdy użytkownik wyświetla klawiaturę sprzętową; "layoutDirection"
zmiana kierunku układu, np. z lewy do prawej (LTR) na od prawej do lewej (RTL);
Dodano w poziomie interfejsu API 17.
"locale"
zmiana ustawień lokalnych, np. gdy użytkownik wybierze nowy język, w którym ma być wyświetlany tekst; "mcc"
zmiana kodu kraju IMSI (MCC), gdy wykryto kartę SIM, która aktualizuje MCC; "mnc"
zmiana kodu sieci komórkowej IMSI (MNC) po wykryciu karty SIM, która aktualizuje MNC; "navigation"
TA change to the navigation type (trackball or D-pad). Zwykle tak się nie dzieje. "orientation"
zmiana orientacji ekranu, np. gdy użytkownik obróci urządzenie;
Uwaga: jeśli Twoja aplikacja jest kierowana na Androida 3.2 (poziom interfejsu API 13) lub nowszego, zadeklaruj też konfiguracje
"screenLayout"
i"screenSize"
, ponieważ układ ekranu i jego rozmiar mogą się zmieniać, gdy urządzenie przełącza się między orientacją poziomą a pionową."screenLayout"
zmiana układu ekranu, np. gdy staje się aktywny inny wyświetlacz; "screenSize"
zmiana bieżącego dostępnego rozmiaru ekranu;
Reprezentuje ona zmianę obecnie dostępnego rozmiaru w stosunku do bieżącego formatu obrazu, więc zmienia się, gdy użytkownik przełącza się między orientacją poziomą a pionową.
Dodano w poziomie API 13.
"smallestScreenSize"
zmiana fizycznego rozmiaru ekranu;
Jest to zmiana rozmiaru niezależnie od orientacji, więc zmienia się tylko wtedy, gdy zmienia się rzeczywisty fizyczny rozmiar ekranu, na przykład po podłączeniu wyświetlacza zewnętrznego. Zmiana tej konfiguracji odpowiada zmianie w konfiguracji
smallestWidth
.Dodano w poziomie API 13.
"touchscreen"
Zmiana ekranu dotykowego. Zwykle tak się nie dzieje. "uiMode"
Zmiana trybu interfejsu, np. gdy użytkownik umieści urządzenie na stacji dokującej na biurku lub w samochodzie albo gdy zmieni się tryb nocny. Więcej informacji o różnych trybach interfejsu znajdziesz w artykule UiModeManager
.Dodano w interfejsie API na poziomie 8.
Wszystkie te zmiany konfiguracji mogą wpływać na wartości zasobów widoczne dla aplikacji. Dlatego podczas wywołania funkcji
onConfigurationChanged()
zwykle trzeba ponownie pobrać wszystkie zasoby, w tym układy widoku i elementy rysowalne, aby prawidłowo obsłużyć zmianę.Uwaga: aby obsługiwać zmiany konfiguracji związane z wielokrotnym otwieraniem okien, użyj zarówno
"screenLayout"
, jak i"smallestScreenSize"
. Wielokrotne okna są obsługiwane w wersji Androida 7.0 (poziom interfejsu API 24) i nowszych. android:directBootAware
Określa, czy dana aktywność jest świadoma bezpośredniego uruchamiania, czyli czy może być wykonywana, zanim użytkownik odblokuje urządzenie.
Uwaga: podczas uruchamiania bezpośredniego aktywność w aplikacji może mieć dostęp tylko do danych przechowywanych w chronionej pamięci urządzenia.
Wartość domyślna to
"false"
.android:documentLaunchMode
- Określa sposób dodawania nowej instancji aktywności do zadania przy każdym jego uruchomieniu.
Ten atrybut umożliwia użytkownikowi wyświetlanie na ekranie Ostatnie wielu dokumentów z tej samej aplikacji.
Ten atrybut ma 4 wartości, które dają następujące efekty, gdy użytkownik otworzy dokument za pomocą aplikacji:
Wartość Opis "intoExisting"
System wyszukuje zadanie, którego identyfikator URI danych i intencja bazowa są zgodne z intencją uruchamiania. ComponentName
Jeśli system znajdzie takie zadanie, usuwa je i ponownie uruchamia, a aktywność wyższego poziomu otrzymuje wywołanie do funkcjionNewIntent(android.content.Intent)
. Jeśli nie znajdzie takiego zadania, utworzy nowe."always"
Aktywność tworzy nowe zadanie dla dokumentu, nawet jeśli dokument jest już otwarty. Jest to tożsame z ustawieniem flag FLAG_ACTIVITY_NEW_DOCUMENT
orazFLAG_ACTIVITY_MULTIPLE_TASK
."none"
Aktywność nie tworzy nowego zadania. Jest to wartość domyślna, która tworzy nowe zadanie tylko wtedy, gdy ustawiona jest wartość FLAG_ACTIVITY_NEW_TASK
. Ekran Ostatnie czynności traktuje tę aktywność tak samo jak domyślnie: wyświetla pojedyncze zadanie aplikacji, które wznawia ostatnią aktywność użytkownika."never"
Aktywność nie jest uruchamiana w nowym dokumencie, nawet jeśli intencja zawiera FLAG_ACTIVITY_NEW_DOCUMENT
. To ustawienie zastępuje działanie flagFLAG_ACTIVITY_NEW_DOCUMENT
iFLAG_ACTIVITY_MULTIPLE_TASK
, jeśli są one ustawione w danej aktywności. Ekran Ostatnie zawiera pojedyncze zadanie dla aplikacji, które wznawia ostatnio wykonywaną aktywność.Uwaga: w przypadku wartości innych niż
"none"
i"never"
aktywność jest definiowana za pomocą parametrulaunchMode="standard"
. Jeśli ten atrybut nie został określony, używana jest wartośćdocumentLaunchMode="none"
. android:enabled
- Czy aktywność może zostać uruchomiona przez system.
"true"
, jeśli jest to możliwe, i"false"
, jeśli nie. Wartością domyślną jest"true"
.Element
<application>
ma własny atrybutenabled
, który ma zastosowanie do wszystkich komponentów aplikacji, w tym do aktywności. Atrybuty<application>
i<activity>
muszą mieć wartość"true"
, ponieważ domyślnie mają taką wartość. Pozwoli to systemowi utworzyć instancję aktywności. Jeśli jeden z nich jest"false"
, nie można go utworzyć. android:enableOnBackInvokedCallback
- Ten parametr umożliwia wyłączenie przewidujących animacji systemowych na poziomie aktywności.
Ustawienie
android:enableOnBackInvokedCallback=false
wyłącza przewidywane animacje wstecz na poziomie aktywności lub aplikacji (w zależności od tego, gdzie ustawisz tag), a także instruuje system, aby ignorował wywołania interfejsu API platformyOnBackInvokedCallback
. android:excludeFromRecents
Określa, czy zadanie rozpoczęte przez tę aktywność jest wykluczone z ekranu Ostatnie. Oznacza to, że jeśli ta aktywność jest główną aktywnością nowego zadania, ten atrybut określa, czy zadanie pojawi się na liście ostatnich aplikacji.
"true"
, jeśli zadanie jest wykluczone z listy;"false"
, jeśli jest uwzględnione. Wartością domyślną jest"false"
.android:exported
Czy aktywność może być uruchamiana przez komponenty innych aplikacji:
- Jeśli
"true"
, działanie jest dostępne dla dowolnej aplikacji i można je uruchomić, podając dokładną nazwę klasy. - Jeśli
"false"
, aktywność może być uruchamiana tylko przez komponenty tej samej aplikacji, aplikacji z tym samym identyfikatorem użytkownika lub uprzywilejowanych komponentów systemu. Jest to wartość domyślna, gdy nie ma żadnych filtrów intencji.
Jeśli aktywność w aplikacji zawiera filtry intencji, ustaw tę opcję na
"true"
, aby umożliwić uruchamianie tej aktywności przez inne aplikacje. Jeśli na przykład aktywność jest główną aktywnością aplikacji i zawieracategory
android.intent.category.LAUNCHER
.Jeśli ten element ma wartość
"false"
, a aplikacja próbuje uruchomić aktywność, system zwraca błądActivityNotFoundException
.Ten atrybut nie jest jedynym sposobem na ograniczenie wyświetlania aktywności w innych aplikacjach. Uprawnienia służą też do ograniczania liczby zewnętrznych podmiotów, które mogą wywoływać aktywność. Zapoznaj się z atrybutem
permission
.- Jeśli
android:finishOnTaskLaunch
- Czy istniejący egzemplarz aktywności jest wyłączany (z wyjątkiem aktywności głównej) po ponownym uruchomieniu zadania przez wybranie go na ekranie głównym.
"true"
, jeśli jest zamknięte, i"false"
, jeśli nie. Wartością domyślną jest"false"
.Jeśli atrybut ten i atrybut
allowTaskReparenting
mają wartość"true"
, atrybut ten ma pierwszeństwo przed drugim. Powiązanie aktywności jest ignorowane. Aktywność nie jest przenoszona do nowego rodzica, ale jest usuwana.Ten atrybut jest ignorowany, jeśli argument
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
nie jest ustawiony. android:hardwareAccelerated
- Czy w przypadku tej aktywności włączona jest sprzętowa akceleracja renderowania.
"true"
, jeśli jest włączona, i"false"
, jeśli nie. Wartością domyślną jest"false"
.W Androidzie 3.0 i nowszych dostępnych jest dla aplikacji akcelerowany sprzętowo mechanizm OpenGL, który poprawia wydajność wielu typowych operacji związanych z grafiką 2D. Gdy włączony jest procesor graficzny z przyspieszeniem sprzętowym, większość operacji w płótnie, narzędziu Paint, trybie Xfer, filtrze kolorów, shaderze i aparacie jest przyspieszana.
Dzięki temu animacje są płynniejsze, przewijanie płynniejsze, a ogólna szybkość reakcji wyższa, nawet w przypadku aplikacji, które nie korzystają bezpośrednio z bibliotek OpenGL frameworku. Ze względu na zwiększone zasoby wymagane do włączenia akceleracji sprzętowej Twoja aplikacja zużywa więcej pamięci RAM.
Nie wszystkie operacje OpenGL 2D są przyspieszone. Jeśli włączysz mechanizm renderowania przyspieszonego sprzętowo, sprawdź, czy Twoja aplikacja może korzystać z niego bez błędów.
android:icon
Ikona symbolizująca aktywność. Ikona jest wyświetlana użytkownikom, gdy wymagane jest przedstawienie aktywności na ekranie. Na przykład w oknie programu uruchamiającego wyświetlają się ikony czynności, które inicjują zadania. Ikona jest często połączona z etykietą. Informacje o etykiecie znajdziesz w atrybucie
android:label
.Ten atrybut jest ustawiany jako odwołanie do zasobu rysowanego zawierającego definicję obrazu. Jeśli nie jest ustawiona, zamiast niej jest używana ikona określona dla aplikacji jako całości. Więcej informacji znajdziesz w atrybucie
icon
elementu<application>
.Ikona aktywności, ustawiona tutaj lub przez element
<application>
, jest też domyślną ikoną wszystkich filtrów intencji tej aktywności. Więcej informacji znajdziesz w atrybucieicon
elementu<intent-filter>
.android:immersive
- Ustawia tryb pełnoekranowy dla bieżącej aktywności. Jeśli jest to
"true"
, elementActivityInfo.flags
ma zawsze ustawiony bitFLAG_IMMERSIVE
, nawet jeśli tryb pełnoekranowy zmienia się w czasie wykonywania za pomocą metodysetImmersive()
. android:label
Etykieta aktywności zrozumiała dla użytkownika. Etykieta wyświetla się na ekranie, gdy użytkownikowi przedstawiana jest dana aktywność. Często wyświetla się razem z ikoną aktywności. Jeśli ten atrybut nie jest ustawiony, zamiast niego używana jest etykieta ustawiona dla aplikacji jako całości. Zobacz atrybut
label
elementu<application>
.Etykieta aktywności, niezależnie od tego, czy jest ustawiona tutaj czy w elemencie
<application>
, jest też domyślną etykietą wszystkich filtrów intencji tej aktywności. Więcej informacji znajdziesz w atrybucielabel
elementu<intent-filter>
.Etykieta jest ustawiana jako odwołanie do zasobu ciągu znaków, aby można ją było zlokalizować tak jak inne ciągi znaków w interfejsie użytkownika. Jednak na potrzeby wygody podczas tworzenia aplikacji można go też ustawić jako ciąg znaków.
android:launchMode
Instrukcje dotyczące uruchamiania aktywności. Dostępnych jest 5 trybów, które działają w połączeniu z flagami aktywności (konstantami
FLAG_ACTIVITY_*
) w obiektachIntent
, aby określić, co się stanie, gdy aktywność zostanie wywołana do obsługi intencji:"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"
Tryb domyślny to
"standard"
.Jak widać w tabeli poniżej, tryby dzielą się na 2 główne grupy: z jednej strony są to aktywności
"standard"
i"singleTop"
, a z drugiej –"singleTask"
,"singleInstance"
i"singleInstancePerTask"
. Aktywność z trybem uruchamiania"standard"
lub"singleTop"
może być uruchamiana wielokrotnie.Wystąpienia mogą należeć do dowolnego zadania i mogą znajdować się w dowolnym miejscu zadania aktywności. Zwykle są one uruchamiane w ramach zadania, które je wywołało (
startActivity()
), chyba że obiektIntent
zawiera instrukcjęFLAG_ACTIVITY_NEW_TASK
, w którym przypadku wybierane jest inne zadanie. Więcej informacji znajdziesz w atrybucietaskAffinity
.Z kolei działania
"singleTask"
,"singleInstance"
i"singleInstancePerTask"
działają inaczej."singleInstancePerTask"
znajduje się zawsze u podstawy zadania związanego z aktywizacją. Urządzenie może też zawierać tylko jedno wystąpienie aktywności"singleInstance"
, ale aktywność"singleInstancePerTask
może być uruchamiana wielokrotnie w różnych zadaniach, gdy jest ustawiona opcjaFLAG_ACTIVITY_MULTIPLE_TASK
lubFLAG_ACTIVITY_NEW_DOCUMENT
.Aktywność z trybem uruchamiania
"singleTask"
łączy zachowania"singleInstance"
i"singleInstancePerTask"
: aktywność może być instancjonowana wielokrotnie i może znajdować się w dowolnym miejscu w zadaniu tego samegotaskAffinity
. Urządzenie może jednak zawierać tylko 1 zadanie służące do znajdowania aktywności"singleTask"
w korzenia aktywności.Tryby
"standard"
i"singleTop"
różnią się od siebie w jednym aspekcie: za każdym razem, gdy pojawia się nowy zamiar w ramach aktywności"standard"
, tworzony jest nowy egzemplarz klasy, aby odpowiedzieć na ten zamiar. Każde wystąpienie obsługuje 1 intencję. Podobnie nowe wystąpienie aktywności"singleTop"
można utworzyć, aby obsłużyć nowy zamiar.Jeśli jednak zadanie docelowe ma już istniejący element aktywności na szczycie stosu, ten element otrzymuje nowe działanie w wywołaniu funkcji
onNewIntent()
. Nie jest tworzona nowa instancja. W przeciwnym razie – jeśli istniejący egzemplarz aktywności"singleTop"
znajduje się w docelowym zadaniu, ale nie jest na szczycie stosu, lub jeśli jest na szczycie stosu, ale nie w docelowym zadaniu – tworzony jest nowy egzemplarz i przesyłany na stos.Podobnie, jeśli użytkownik przejdzie do aktywności w bieżącym stosie, zachowanie jest określane przez tryb uruchamiania aktywności nadrzędnej. Jeśli aktywność nadrzędna ma tryb uruchamiania
singleTop
(lub jeśli zamiarup
zawieraFLAG_ACTIVITY_CLEAR_TOP
), aktywność nadrzędna jest przenoszona na szczyt stosu, a jej stan jest zachowany.Intencja nawigacji jest odbierana przez metodę
onNewIntent()
aktywności nadrzędnej. Jeśli aktywność nadrzędna ma tryb uruchamianiastandard
, a intencjaup
nie zawieraFLAG_ACTIVITY_CLEAR_TOP
, bieżąca aktywność i jej nadrzędna zostają usunięte ze stosu, a nowy egzemplarz aktywności nadrzędnej zostaje utworzony, aby przyjąć intencję nawigacyjną.Tryb
"singleInstance"
różni się od trybów"singleTask"
i"singleInstancePerTask"
tylko jednym aspektem: aktywność z trybem uruchamiania"singleTask"
lub"singleInstancePerTask"
może zawierać inne aktywności, które muszą być aktywnościami"standard"
lub"singleTop"
.Z kolei aktywność
"singleInstance"
nie może zawierać żadnych innych aktywności. Musi być jedyną aktywnością w zadaniu. Jeśli rozpocznie inną aktywność, ta aktywność zostanie przypisana do innego zadania, tak jakby w intencji znajdował się elementFLAG_ACTIVITY_NEW_TASK
.Przykłady zastosowań Tryb uruchamiania Wiele instancji? Komentarze normalne uruchamianie w przypadku większości działań; "standard"
Tak Domyślny: System zawsze tworzy nowy egzemplarz działania w ramach zadania docelowego i przekierowuje do niego intencję. "singleTop"
Warunkowo Jeśli instancja aktywności już istnieje na szczycie zadania docelowego, system przekierowuje zamiar do tej instancji przez wywołanie jej metody onNewIntent()
, zamiast tworzyć nową instancję aktywności.Specjalne wersje
(niezalecane do ogólnego użytku)"singleTask"
Warunkowo System tworzy aktywność w korzeniach nowego zadania lub lokalizuje ją w istniejącym zadaniu o tej samej przynależności. Jeśli instancja aktywności już istnieje i znajduje się u korzenia zadania, system przekierowuje intencję do istniejącego wystąpienia przez wywołanie metody onNewIntent()
, zamiast tworzyć nową."singleInstance"
Nie To samo co "singleTask"
, z tym że system nie uruchamia żadnych innych działań w ramach zadania zawierającego instancję. Aktywność jest zawsze jedynym elementem zadania."singleInstancePerTask"
Warunkowo Aktywność może działać tylko jako główna aktywność zadania, czyli pierwsza aktywność, która utworzyła zadanie. W związku z tym w zadaniu występuje tylko jedno wystąpienie tej aktywności. Jednak w ramach różnych zadań może ona być tworzona wielokrotnie. Jak widać w poprzedniej tabeli,
"standard"
to domyślny tryb, który jest odpowiedni w przypadku większości rodzajów działań."singleTop"
to też popularny i przydatny tryb uruchamiania wielu rodzajów działań. Pozostałe tryby,"singleTask"
,"singleInstance"
i"singleInstancePerTask"
, nie nadają się do większości aplikacji. W efekcie użytkownicy mogą nie rozumieć modelu interakcji, który różni się od większości innych aplikacji.Niezależnie od wybranego trybu uruchamiania sprawdź użyteczność aktywności podczas uruchamiania i po powrocie do niej z innych aktywności i zadań za pomocą przycisku Wstecz.
Więcej informacji o trybach uruchamiania i ich interakcji z flagami
Intent
znajdziesz w artykule Zadania i stos.android:lockTaskMode
- Określa sposób, w jaki system przedstawia tę aktywność, gdy urządzenie działa w trybie blokady.
Android może wykonywać zadania w trybie pełnoekranowym, zwanym trybem zablokowanych zadań. Gdy system działa w trybie zablokowanego ekranu, użytkownicy urządzenia zwykle nie widzą powiadomień, nie mają dostępu do aplikacji, które nie są na liście dozwolonych, ani nie mogą wrócić do ekranu głównego, chyba że aplikacja Home jest na liście dozwolonych.
Gdy system jest w trybie blokady zadań, mogą działać tylko aplikacje, które znajdują się na liście dozwolonych aplikacji w kontrolerze zasad dotyczących urządzeń (DPC). System i aplikacje uprzywilejowane mogą jednak działać w trybie zablokowanego zadania bez konieczności umieszczenia na liście dozwolonych.
Wartość może być dowolną z tych wartości ciągu znaków:
R.attr.lockTaskMode
:Wartość Opis "normal"
Wartość domyślna. Jest to wartość domyślna. Zadania nie są uruchamiane w trybie blokowania zadań, ale można je tam umieścić, wywołując funkcję startLockTask()
."never"
Zadania nie są uruchamiane w trybie
lockTask
, a użytkownik urządzenia nie może przypiąć tych zadań na ekranie Ostatnie.Uwaga: ten tryb jest dostępny tylko dla aplikacji systemowych i uprzywilejowanych. Aplikacje bez uprawnień o tej wartości są traktowane jako
normal
."if_whitelisted"
Jeśli DPC autoryzuje ten pakiet za pomocą DevicePolicyManager.setLockTaskPackages()
, ten tryb jest identyczny zalways
, z tym że aktywność musi wywołaćstopLockTask()
, zanim będzie można ją zakończyć, jeśli jest ostatnim zablokowanym zadaniem. Jeśli DPC nie autoryzuje tego pakietu, ten tryb jest identyczny znormal
."always"
Zadania z tą aktywnością zawsze uruchamiają się w trybie blokady zadań. Jeśli system jest już w trybie blokady zadań, nowe zadanie jest uruchamiane na wierzchu bieżącego zadania. Zadania uruchomione w tym trybie mogą wyjść z trybu zablokowanych zadań, wywołując funkcję
finish()
.Uwaga: ten tryb jest dostępny tylko dla aplikacji systemowych i uprzywilejowanych. Aplikacje bez uprawnień o tej wartości są traktowane jako
normal
.Ten atrybut został wprowadzony w poziomie interfejsu API 23.
android:maxRecents
- Maksymalna liczba zadań pochodzących z tego działania na ekranie Ostatnie. Gdy zostanie osiągnięta ta liczba, system usunie z ekranu Ostatnie najmniej używaną instancję. Prawidłowe wartości to liczby całkowite od 1 do 50 lub od 1 do 25 na urządzeniach z małą ilością pamięci. Zero jest nieprawidłowe. Wartością domyślną jest 16.
android:maxAspectRatio
Maksymalny format obrazu obsługiwany przez aktywność. Jeśli aplikacja działa na urządzeniu o szerszym formacie obrazu, system automatycznie umieści ją w ramce, pozostawiając niewykorzystane części ekranu, aby aplikacja mogła działać w swoim maksymalnym formacie obrazu.
Maksymalny współczynnik kształtu jest wyrażony jako dziesiętna postać ilorazu dłuższego wymiaru urządzenia przez jego krótszy wymiar. Jeśli na przykład maksymalny format obrazu to 7:3, ustaw wartość tego atrybutu na 2,33.
W przypadku urządzeń innych niż urządzenia do noszenia wartość tego atrybutu musi wynosić co najmniej 1, 33. W przypadku urządzeń noszonych musi to być wersja 1.0 lub nowsza. W przeciwnym razie system zignoruje wartość zdefiniowaną w pliku set.
Uwaga: ten atrybut jest ignorowany, jeśli dla aktywności ustawiono wartość
resizeableActivity
na „prawda”, ponieważ oznacza to, że Twoja aktywność obsługuje dowolny rozmiar.Więcej informacji o tym atrybucie znajdziesz w artykule Deklarowanie maksymalnego współczynnika proporcji.
android:multiprocess
- Określa, czy wystąpienie aktywności może być uruchamiane w ramach procesu komponentu, który ją wywołał. Jeśli jest to możliwe, jest to
"true"
, a w przeciwnym razie"false"
. Wartością domyślną jest"false"
.Zwykle nowy egzemplarz aktywności jest uruchamiany w ramach procesu aplikacji, która go zdefiniowała, więc wszystkie egzemplarze aktywności są wykonywane w tym samym procesie. Jeśli jednak ten parametr ma wartość
"true"
, instancje aktywności mogą działać w różnych procesach, co pozwala systemowi tworzyć instancje wszędzie tam, gdzie są używane, o ile tylko zezwalają na to uprawnienia. Jest to coś, czego prawie nigdy nie trzeba ani nie trzeba. android:name
- Nazwa klasy, która implementuje aktywność, podklasy klasy
Activity
. Wartość atrybutu to zazwyczaj w pełni kwalifikowana nazwa klasy, np."com.example.project.ExtracurricularActivity"
. Jednak w ramach skrótu, jeśli pierwszy znak nazwy to kropka, na przykład".ExtracurricularActivity"
, jest on dołączany do przestrzeni nazw określonej w plikubuild.gradle
.Po opublikowaniu aplikacji nie zmieniaj tej nazwy, chyba że ustawisz parametr
android:exported="false"
. Nie ma wartości domyślnej. Musisz podać nazwę. android:noHistory
- Czy aktywność zostanie usunięta ze stosu aktywności i zakończona przez wywołanie metody
finish()
, gdy użytkownik przejdzie do innej aktywności i ta aktywność nie będzie już widoczna na ekranie."true"
, jeśli jest zakończone, lub"false"
, jeśli nie. Wartością domyślną jest"false"
.Wartość
"true"
oznacza, że aktywność nie pozostawia śladu historycznego. Nie pozostaje ona w steku aktywności zadania, więc użytkownik nie może do niej wrócić. W takim przypadku funkcjaonActivityResult()
nigdy nie jest wywoływana, jeśli rozpoczniesz inne działanie w celu uzyskania wyniku z tego działania.Ten atrybut został wprowadzony w interfejsie API w wersji 3.
android:parentActivityName
- Nazwa klasy logicznego elementu nadrzędnego aktywności. Nazwa musi być zgodna z nazwą klasy atrybutu
android:name
odpowiadającego elementu<activity>
.System odczytuje ten atrybut, aby określić, które działanie ma rozpocząć, gdy użytkownik kliknie przycisk W górę na pasku czynności. System może też używać tych informacji do syntezowania poprzednich działań z użyciem
TaskStackBuilder
.Aby obsługiwać poziomy interfejsu API 4–16, możesz też zadeklarować aktywność nadrzędną za pomocą elementu
<meta-data>
, który określa wartość dla elementu"android.support.PARENT_ACTIVITY"
:<activity android:name="com.example.app.ChildActivity" android:label="@string/title_child_activity" android:parentActivityName="com.example.app.MainActivity" > <!-- Parent activity meta-data to support API level 4+ --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.app.MainActivity" /> </activity>
Więcej informacji o deklarowaniu aktywności nadrzędnej w celu obsługi nawigacji w górę znajdziesz w artykule Dostępność nawigacji w górę.
Ten atrybut został wprowadzony w wersji interfejsu API 16.
android:persistableMode
Określa, jak instancja aktywności jest zachowywana w ramach zadania zawierającego po ponownym uruchomieniu urządzenia.
Jeśli główna aktywność zadania ma wartość tego atrybutu ustawioną na
persistRootOnly
, zachowana jest tylko główna aktywność. W przeciwnym razie są sprawdzane działania znajdujące się wyżej w strukturze podrzędnej zadania. Zachowane są wszystkie działania, które ustawiły wartość tego atrybutu napersistAcrossReboots
.Jeśli używasz tego atrybutu, jego wartość musi być jedną z tych:
Wartość Opis persistRootOnly
Wartość domyślna. Po ponownym uruchomieniu systemu zadanie aktywności jest zachowane, ale używany jest tylko zamiar uruchamiania aktywności rdzeniowej.
Gdy intencja uruchamiania aplikacji wczyta jej główną aktywność, ta ostatnia nie otrzyma obiektu
PersistableBundle
. Dlatego nie używajonSaveInstanceState()
do zachowania stanu aktywności głównej aplikacji po ponownym uruchomieniu urządzenia.Uwaga: ta wartość atrybutu wpływa na działanie aplikacji tylko wtedy, gdy jest ustawiona w działalności głównej aplikacji.
persistAcrossReboots
Stan tej aktywności jest zachowany wraz ze stanem każdej aktywności znajdującej się wyżej w strukturze, która ma własny atrybut
persistableMode
ustawiony napersistAcrossReboots
. Jeśli aktywność nie ma atrybutupersistableMode
ustawionego napersistAcrossReboots
lub jest uruchamiana za pomocą flagiIntent.FLAG_ACTIVITY_NEW_DOCUMENT
, ta aktywność wraz ze wszystkimi aktywnymi działaniami na wyższym poziomie nie są zachowywane.Gdy intencja wczyta aktywność, której atrybut
persistableMode
ma w aplikacji wartośćpersistAcrossReboots
, aktywność otrzymuje obiektPersistableBundle
w swojej metodzieonCreate()
. Dlatego możesz użyćonSaveInstanceState()
do zachowania stanu aktywności po ponownym uruchomieniu urządzenia, o ile atrybutpersistableMode
ma wartośćpersistAcrossReboots
.Uwaga: ta wartość atrybutu wpływa na działanie aplikacji, nawet jeśli jest ustawiona w innej aktywności niż główna aktywność aplikacji.
persistNever
Stan aktywności nie jest zachowany.
Uwaga: ta wartość atrybutu wpływa na działanie aplikacji tylko wtedy, gdy jest ustawiona w działalności głównej aplikacji.
Ten atrybut został wprowadzony na poziomie API 21.
android:permission
- Nazwa uprawnienia, które muszą mieć klienci, aby uruchomić działanie lub w inny sposób je uzyskać w odpowiedzi na intencję. Jeśli wywołujący
startActivity()
lubstartActivityForResult()
nie ma określonego uprawnienia, jego zamiar nie zostanie przekazany do aktywności.Jeśli ten atrybut nie jest ustawiony, do aktywności stosuje się uprawnienia określone przez atrybut
<application>
elementupermission
. Jeśli żaden z tych atrybutów nie jest ustawiony, aktywność nie jest chroniona przez uprawnienie.Więcej informacji o uprawnieniach znajdziesz w sekcji Uprawnienia w artykule Omówienie pliku manifestu aplikacji oraz w wskazówkach dotyczących bezpieczeństwa.
android:process
Nazwa procesu, w którym jest wykonywana aktywność. Zwykle wszystkie komponenty aplikacji działają w ramach nazwy domyślnego procesu utworzonego dla aplikacji, więc nie musisz używać tego atrybutu. Jeśli to konieczne, możesz jednak zastąpić domyślną nazwę procesu za pomocą tego atrybutu, co pozwoli Ci rozmieścić komponenty aplikacji w kilku procesach.
Jeśli nazwa przypisana do tego atrybutu zaczyna się od dwukropka (
:
), w razie potrzeby tworzy się nowy proces, który jest prywatny dla aplikacji, a w jego ramach jest wykonywana aktywność.Jeśli nazwa procesu zaczyna się małą literą, aktywność jest wykonywana w globalnym procesie o tej nazwie, o ile ma na to uprawnienia. Pozwala to komponentom w różnych aplikacjach współdzielić proces, co zmniejsza wykorzystanie zasobów.
Atrybut
process
elementu<application>
może określać inną domyślną nazwę procesu dla wszystkich komponentów.android:relinquishTaskIdentity
Określa, czy działanie przekazuje identyfikatory zadań działaniu znajdującemu się wyżej w steku zadań. Zadanie, którego aktywność wierzchołkowa ma ten atrybut ustawiony na
"true"
, zastępuje podstawęIntent
wartością z następnej aktywności w zadaniu.Jeśli następna aktywność ma również ten atrybut ustawiony na
"true"
, podstawaIntent
jest przekazywana do każdej aktywności, którą uruchamia w ramach tego samego zadania. Ten proces jest powtarzany w przypadku każdej aktywności, aż do znalezienia aktywności, w której ten atrybut ma wartość"false"
. Wartością domyślną jest"false"
.Ten atrybut ustawiony na
"true"
pozwala również aktywności używać atrybutuActivityManager.TaskDescription
do zmiany etykiet, kolorów i ikon na ekranie Ostatnie.android:requireContentUriPermissionFromCaller
-
Określa uprawnienia wymagane do uruchomienia tej aktywności podczas przekazywania identyfikatorów URI treści. Wartość domyślna to
none
, co oznacza, że nie są wymagane żadne konkretne uprawnienia. Ustawienie tego atrybutu ogranicza wywoływanie aktywności na podstawie uprawnień wywołującego. Jeśli wywołujący nie ma wymaganych uprawnień, rozpoczęcie aktywności zostanie odrzucone za pomocąSecurityException
.Pamiętaj, że egzekwowanie zasad działa w przypadku identyfikatorów URI treści w
Intent.getData()
,Intent.EXTRA_STREAM
iIntent.getClipData()
.Może to być wartość ciągu znaków, w którym znaki takie jak „\\n” są oznaczane za pomocą znaku '\\', a znaki Unicode za pomocą znaku '\\uxxxx'.
Musi być jedną z tych wartości stałych.
Stała Wartość Opis brak 0 Domyślnie nie są wymagane żadne uprawnienia. czytaj 1 Wymaga, aby wywołujący miał dostęp do odczytu przekazanych identyfikatorów URI treści. readAndWrite 4 Wymaga, aby wywołujący miał uprawnienia do odczytu i zapisu do przekazanych identyfikatorów URI treści. readOrWrite 3 Wymaga, aby wywołujący miał uprawnienia do odczytu lub zapisu do przekazanych identyfikatorów URI treści. pisać 2 Wymaga, aby wywołujący miał uprawnienia do zapisu do przekazanych identyfikatorów URI treści. android:resizeableActivity
-
Określa, czy aplikacja obsługuje tryb wielookienności. Możesz ustawić ten atrybut w elemencie
<activity>
lub<application>
.Jeśli ten atrybut ma wartość
"true"
, użytkownik może uruchomić aktywność w trybie podzielonego ekranu i trybie swobodnym. Jeśli ustawisz atrybut na"false"
, aplikacja nie będzie mogła być testowana ani optymalizowana pod kątem środowiska wielookiennego. System może nadal umieszczać aktywność w trybie wielu okien z zastosowaniem trybu zgodności.Ustawienie tego atrybutu na
"false"
nie gwarantuje, że na ekranie nie będzie widocznych innych aplikacji w trybie wielookiennym, np. w trybie obrazu w obrazie, lub na innych wyświetlaczach. Dlatego ustawienie tej flagi nie oznacza, że aplikacja ma wyłączny dostęp do zasobu.Jeśli Twoja aplikacja jest kierowana na poziom interfejsu API 24 lub wyższy, a Ty nie określisz wartości tego atrybutu, jego wartość domyślna będzie wynosić
"true"
.Jeśli Twoja aplikacja jest kierowana na poziom interfejsu API 31 lub nowszy, ten atrybut działa inaczej na małych i dużych ekranach:
- Duże ekrany (sw >= 600 dp): wszystkie aplikacje obsługują tryb wielu okien. Atrybut wskazuje, czy można zmienić rozmiar aplikacji, a nie to, czy aplikacja obsługuje tryb wielookienkowy. Jeśli
resizeableActivity="false"
, aplikacja jest przełączana w tryb zgodności, gdy zachodzi taka potrzeba, aby dostosować się do wymiarów ekranu. - Małe ekrany (sw < 600 dp): jeśli
resizeableActivity="true"
oraz minimalna szerokość i minimalna wysokość aktywności mieszczą się w wymaganiach dotyczących trybu wielookiennego, aplikacja obsługuje tryb wielookienny. JeśliresizeableActivity="false"
, aplikacja nie obsługuje trybu wielookiennego niezależnie od minimalnej szerokości i wysokości aktywności.
Uwaga: producenci urządzeń mogą zastąpić działanie interfejsu API na poziomie 31.
Ten atrybut został dodany w wersji interfejsu API 24.
Uwaga: wartość głównej aktywności zadania jest stosowana do wszystkich dodatkowych aktywności uruchomionych w ramach tego zadania. Oznacza to, że jeśli główna aktywność zadania może być zmieniana, system traktuje wszystkie inne aktywności w zadaniu jako podlegające zmianom. Jeśli nie można zmienić rozmiaru głównej aktywności, nie można też zmienić rozmiaru innych aktywności w zadaniu.
- Duże ekrany (sw >= 600 dp): wszystkie aplikacje obsługują tryb wielu okien. Atrybut wskazuje, czy można zmienić rozmiar aplikacji, a nie to, czy aplikacja obsługuje tryb wielookienkowy. Jeśli
android:screenOrientation
Żądana orientacja aktywności.
Gdy aktywność wypełnia cały ekran, żądana orientacja działa jako sugestia, aby zmienić orientację na ekranie zgodnie z żądaną wartością. Może to spowodować orientację różniącą się od fizycznej orientacji ekranu w przestrzeni, co wymaga od użytkownika obrócenia urządzenia, aby kontynuować korzystanie z aplikacji. W Androidzie 12 (poziom interfejsu API 31) i nowszych wersjach producenci urządzeń mogą skonfigurować poszczególne ekrany urządzenia (np. ekran tabletu w urządzeniu składanym), aby ignorować tę sugestię i zamiast tego wymusić letterboxowanie aktywności w preferowanej orientacji urządzenia. W efekcie orientacja aktywności będzie odpowiadać żądanej orientacji bez konieczności fizycznego obracania urządzenia przez użytkownika.
W trybie wielu okien żądana orientacja nie jest sugestią ogólnej orientacji. Jeśli aktywność jest w formacie letterbox, wybrana orientacja wpływa na sposób wyświetlania w formacie letterbox.
Wartość może być dowolnym z tych ciągów:
"unspecified"
Wartość domyślna. System wybiera orientację. Zasady, których używa, a co za tym idzie, podejmowane w określonych kontekstach decyzje, mogą się różnić w zależności od urządzenia. "behind"
Ta sama orientacja co aktywność znajdująca się bezpośrednio pod nim w stosie aktywności. "landscape"
orientacja pozioma (wyświetlacz jest szerszy niż wyższy); "portrait"
orientacja pionowa (wyświetlacz jest wyższy niż szerszy); "reverseLandscape"
Orientacja pozioma w przeciwnym kierunku niż normalna orientacja pozioma. Dodano w poziomie API 9. "reversePortrait"
Orientacja pionowa w przeciwnym kierunku niż normalna orientacja pionowa. Dodano w poziomie API 9. "sensorLandscape"
Orientacja pozioma, ale może być normalna lub odwrócona w zależności od czujnika urządzenia. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obracanie na podstawie czujnika. Dodano w poziomie API 9. "sensorPortrait"
Orientacja pionowa, ale może być normalna lub odwrócona w zależności od czujnika urządzenia. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obracanie na podstawie czujnika. W zależności od konfiguracji urządzenia odwrócenie może być jednak niemożliwe. Dodano w poziomie API 9. "userLandscape"
Orientacja pozioma, ale może być normalna lub odwrócona w zależności od czujnika urządzenia i preferencji użytkownika. Dodano w poziomie interfejsu API 18. "userPortrait"
Orientacja pionowa, ale może być normalna lub odwrócona w zależności od czujnika urządzenia i preferencji użytkownika. W zależności od konfiguracji urządzenia obracanie w dół może być jednak niemożliwe. Dodano w poziomie interfejsu API 18. "sensor"
Orientację określa czujnik orientacji urządzenia. Orientacja wyświetlacza zależy od tego, jak użytkownik trzyma urządzenie. Zmienia się, gdy użytkownik obróci urządzenie. Niektóre urządzenia nie obsługują domyślnie wszystkich 4 możliwych orientacji. Aby użyć wszystkich 4 orientacji, użyj "fullSensor"
. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obracanie na podstawie czujnika."fullSensor"
Czujnik orientacji urządzenia określa orientację w przypadku dowolnej z 4 orientacji. Jest to podobne do "sensor"
, z tym że pozwala na ustawienie dowolnej z 4 możliwych orientacji ekranu niezależnie od tego, co urządzenie zwykle obsługuje. Na przykład niektóre urządzenia zwykle nie używają orientacji poziomej odwróconej o 180° ani pionowej odwróconej o 180°, ale ta opcja umożliwia korzystanie z tych orientacji. Dodano w poziomie API 9."nosensor"
Orientacja jest określana bez odniesienia do fizycznego czujnika orientacji. Czujnik jest ignorowany, więc wyświetlacz nie obraca się w zależności od tego, jak użytkownik przemieszcza urządzenie. "user"
Preferowana orientacja użytkownika. "fullUser"
Jeśli użytkownik zablokował obracanie na podstawie czujnika, ta opcja działa tak samo jak user
. W przeciwnym razie działa tak samo jakfullSensor
i umożliwia każdą z 4 możliwych orientacji ekranu. Dodano w poziomie interfejsu API 18."locked"
Blokuje orientację na bieżące położenie. Dodano w interfejsie API na poziomie 18. Uwaga: jeśli określisz jedną z wartości poziomej lub pionowej, będzie to traktowane jako twardy wymóg orientacji, w której ma działać aktywność. Zadeklarowana wartość umożliwia filtrowanie według usług takich jak Google Play, dzięki czemu aplikacja jest dostępna tylko na urządzeniach, które obsługują orientację wymaganą przez Twoje działania. Jeśli na przykład zadeklarujesz
"landscape"
,"reverseLandscape"
lub"sensorLandscape"
, aplikacja będzie dostępna tylko na urządzeniach obsługujących orientację poziomą.Pamiętaj też, aby wyraźnie zadeklarować, że aplikacja wymaga orientacji pionowej lub poziomej za pomocą elementu
<uses-feature>
, takiego jak<uses-feature android:name="android.hardware.screen.portrait"/>
. Jest to zachowanie filtrowania zapewniane przez Google Play i inne usługi, które je obsługują. Sama platforma nie decyduje o tym, czy aplikacja może się zainstalować, gdy urządzenie obsługuje tylko określone orientacje.android:showForAllUsers
-
Określa, czy aktywność jest wyświetlana, gdy bieżący użytkownik urządzenia jest inny niż użytkownik, który rozpoczął aktywność. Możesz ustawić ten atrybut na wartość dosłowną, np.
"true"
lub"false"
, albo na atrybut zasobu lub motywu, który zawiera wartość logiczną.Ten atrybut został dodany w poziomie interfejsu API 23.
android:stateNotNeeded
- Czy aktywność może zostać zakończona i pomyślnie wznowiona bez zapisywania jej stanu. Wartość
"true"
, jeśli można go uruchomić ponownie bez odniesienia do poprzedniego stanu, oraz"false"
, jeśli wymagany jest poprzedni stan. Wartością domyślną jest"false"
.Zwykle przed tym, jak aktywność zostanie tymczasowo zamknięta, aby zaoszczędzić zasoby, wywoływana jest jej metoda
onSaveInstanceState()
. Ta metoda przechowuje bieżący stan aktywności w obiekcieBundle
, który jest następnie przekazywany doonCreate()
, gdy aktywność zostanie ponownie uruchomiona. Jeśli ten atrybut ma wartość"true"
, funkcjaonSaveInstanceState()
może nie zostać wywołana, a zamiast wartościBundle
zostanie przekazana wartośćonCreate()
, tak jak w przypadku pierwszego uruchomienia aktywności.null
Ustawienie
"true"
oznacza, że aktywność może zostać wznowiona bez zachowania stanu. Na przykład aktywność wyświetlająca ekran główny używa tego ustawienia, aby nie zostać usunięta, jeśli z jakiegoś powodu ulegnie awarii. android:supportsPictureInPicture
-
Określa, czy aktywność obsługuje wyświetlanie w trybie obrazu w obrazie.
android:taskAffinity
Zadanie, do którego jest powiązane działanie. Działania o tym samym powiązaniu należą do tego samego zadania, do tego samego „zastosowania” z perspektywy użytkownika. Powiązanie zadania jest określane przez powiązanie jego głównej aktywności.
Powiązanie określa 2 rzeczy: zadanie, do którego jest ponownie dołączane działanie (patrz atrybut
allowTaskReparenting
) oraz zadanie, które zawiera działanie, gdy jest ono uruchamiane z flagąFLAG_ACTIVITY_NEW_TASK
.Domyślnie wszystkie działania w aplikacji mają ten sam stopień podobieństwa. Możesz ustawić ten atrybut, aby grupować je inaczej, a nawet umieszczać w ramach tego samego zadania aktywności zdefiniowane w różnych aplikacjach. Aby określić, że aktywność nie ma powiązania z żadnym zadaniem, ustaw ją jako pusty ciąg znaków.
Jeśli ten atrybut nie jest ustawiony, aktywność dziedziczy ustawienia powiązania określone w aplikacji. Zapoznaj się z atrybutem
taskAffinity
elementu<application>
. Nazwa domyślnej grupy aplikacji to przestrzeń nazw określona w plikubuild.gradle
.android:theme
- Odwołuje się do zasobu stylów, który definiuje ogólny motyw aktywności.
Automatycznie ustawia kontekst aktywności, aby używać tego
theme
, i może też powodować animacje „rozpoczynania” przed uruchomieniem aktywności, aby lepiej pasowały do jej rzeczywistego wyglądu.Jeśli ten atrybut nie jest ustawiony, aktywność dziedziczy motyw ustawiony dla aplikacji jako całości z atrybutu
<application>
elementutheme
. Jeśli ten atrybut też nie jest ustawiony, używane jest domyślne motywy systemu. Więcej informacji znajdziesz w artykule Style i motywy. android:uiOptions
dodatkowe opcje interfejsu aktywności, Musi być jedną z tych wartości.
Wartość Opis "none"
Brak dodatkowych opcji interfejsu. Jest to ustawienie domyślne. "splitActionBarWhenNarrow"
Dodaje pasek na dole ekranu, aby wyświetlać elementy działania na pasku aplikacji, zwanym też paskiem działań, gdy jest ograniczona przestrzeń pozioma, np. w orientacji pionowej na telefonie. Zamiast niewielkiej liczby elementów działań wyświetlanych na pasku aplikacji u góry ekranu pasek ten jest podzielony na górną sekcję nawigacji i dolny pasek z elementami działań. Oznacza to, że na górze strony jest dostępna odpowiednia ilość miejsca nie tylko na elementy akcji, ale też na elementy nawigacyjne i elementy tytułu. Pozycje menu nie są rozdzielane na 2 paski. Występują zawsze razem. Więcej informacji o pasku aplikacji znajdziesz w artykule Dodawanie paska aplikacji.
Ten atrybut został dodany w wersji interfejsu API 14.
android:windowSoftInputMode
- Interakcja okna głównego czynności z oknem zawierającym klawiaturę ekranową. Ustawienie tego atrybutu ma wpływ na 2 rzeczy:
- Określa, czy klawiatura ekranowa jest ukryta czy widoczna, gdy aktywność staje się głównym punktem zainteresowania użytkownika.
- czy główne okno aktywności jest mniejsze, aby zrobić miejsce dla klawiatury ekranowej, czy jego zawartość jest przesunięta, aby umożliwić wyświetlenie aktualnego punktu skupienia, gdy część okna jest zasłonięta przez klawiaturę ekranową.
Ustawienie musi być jedną z wartości wymienionych w poniższej tabeli lub kombinacją jednej wartości
"state..."
i jednej wartości"adjust..."
. Ustawienie wielu wartości w każdej grupie, np. wielu wartości"state..."
, powoduje nieokreślone wyniki. Poszczególne wartości są rozdzielane znakiem kreski pionowej (|
), jak w tym przykładzie:<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >
Wartości ustawione tutaj (inne niż
"stateUnspecified"
i"adjustUnspecified"
) zastępują wartości ustawione w motywie.Wartość Opis "stateUnspecified"
Nie określono, czy klawiatura ekranowa jest ukryta, czy widoczna. System wybiera odpowiedni stan lub korzysta z ustawienia w motywie. Jest to domyślne ustawienie działania klawiatury ekranowej.
"stateUnchanged"
Gdy aktywność staje się aktywna, klawiatura pozostaje w tym samym stanie, w jakim była ostatnio – widoczna lub ukryta. "stateHidden"
Klawiatura ekranowa jest ukryta, gdy użytkownik wybierze aktywność, czyli gdy przejedzie do niej, a nie wróci do niej z innej aktywności. "stateAlwaysHidden"
Klawiatura wirtualna jest zawsze ukryta, gdy w oknie głównym aktywności jest aktywny obszar wprowadzania danych. "stateVisible"
Klawiatura ekranowa staje się widoczna, gdy użytkownik wybierze daną aktywność, czyli gdy przejdzie do niej świadomie, a nie po prostu powróci do niej z innej aktywności. "stateAlwaysVisible"
Klawiatura ekranowa jest widoczna, gdy okno ma fokus. "adjustUnspecified"
Nie określono, czy okno główne aktywności zmienia rozmiar, aby zrobić miejsce dla klawiatury ekranowej, czy też zawartość okna przesuwa się, aby aktualnie skupiony element był widoczny na ekranie. System automatycznie wybiera jeden z tych trybów w zależności od tego, czy zawartość okna zawiera widoki układu, które można przewijać. Jeśli takie widok jest dostępny, okno zmienia rozmiar, ponieważ przewijanie może spowodować, że cały zawartość okna będzie widoczna na mniejszym obszarze. Jest to ustawienie domyślne zachowania okna głównego.
"adjustResize"
Rozmiar okna głównego aktywności jest zawsze dostosowywany, aby zapewnić miejsce dla klawiatury ekranowej. "adjustPan"
Rozmiar okna głównego aktywności nie jest dostosowywany, aby zrobić miejsce dla klawiatury ekranowej. Zamiast tego zawartość okna przesuwa się automatycznie, aby bieżący element nigdy nie był zasłonięty przez klawiaturę, a użytkownicy zawsze widzieli, co wpisują. Jest to zazwyczaj mniej pożądane niż zmiana rozmiaru, ponieważ użytkownik może potrzebować zamkniętej klawiatury ekranowej, aby dotrzeć do zasłoniętych części okna i z nimi współpracować. "adjustNothing"
Rozmiar okna głównego aktywności nie jest zmieniany ani nie jest przesuwany, aby zrobić miejsce dla klawiatury ekranowej. Aktywność odpowiada za tworzenie miejsca dla wirtualnej klawiatury za pomocą wstawek okna. W przypadku działań, które obsługują w odpowiednim stopniu wstawione okna, zapewnia to największą kontrolę nad tym, jak zawartość okna jest wyświetlana na ekranie. Ten atrybut został wprowadzony w interfejsie API w wersji 3.
- wprowadzona w:
- Poziom interfejsu API 1 w przypadku wszystkich atrybutów oprócz atrybutów
noHistory
iwindowSoftInputMode
, które zostały dodane na poziomie interfejsu API 3. - Zobacz też:
<application>
<activity-alias>
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-01-23 UTC.
[null,null,["Ostatnia aktualizacja: 2025-01-23 UTC."],[],[]]