<attività>

:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          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: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>
contenute in:
<application>
può contenere:
<intent-filter>
<meta-data>
<layout>
description:
Dichiara un'attività (una sottoclasse Activity) che implementa parte dell'interfaccia utente visiva dell'applicazione. Tutte le attività devono essere rappresentate da elementi <activity> nel file manifest. Quelle che non sono dichiarate non sono rilevate dal sistema e non vengono mai eseguite.
:
android:allowEmbedded
Indica che l'attività può essere lanciata come elemento secondario incorporato di un'altra attività, in particolare nel caso in cui il bambino risieda in un contenitore, ad esempio una risorsa Display di proprietà di un'altra attività. Ad esempio, le attività utilizzate per le notifiche personalizzate di Wear lo dichiarano in modo che Wear possa mostrare l'attività nel suo flusso di contesto, che risiede in un altro processo.

Il valore predefinito di questo attributo è false.

android:allowTaskReparenting
Indica se l'attività può essere spostata dall'attività che l'ha avviata all'attività per cui ha un'affinità la prossima volta che l'attività viene portata in primo piano. È "true" se può essere spostato e "false" se rimane con l'attività in cui è iniziata.

Se questo attributo non viene impostato, all'attività si applica il valore impostato dall'attributo allowTaskReparenting corrispondente dell'elemento <application>. Il valore predefinito è "false".

Normalmente, quando un'attività viene avviata, viene associata a quella dell'attività che l'ha avviata e rimane lì per tutta la sua durata. Puoi utilizzare questo attributo per forzarne la reintegrazione rispetto all'attività per cui ha un'affinità quando l'attività attuale non viene più visualizzata. In genere, questo viene utilizzato per spostare le attività di un'applicazione all'attività principale associata all'applicazione.

Ad esempio, se un messaggio email contiene un link a una pagina web e facendo clic sul link viene visualizzata un'attività che può visualizzare la pagina. Questa attività è definita dall'applicazione browser, ma viene avviata come parte dell'attività email. Se viene reiniziato nell'attività del browser, viene mostrato quando il browser viene mostrato in primo piano e non è presente quando viene nuovamente mostrata l'attività email.

L'affinità di un'attività è definita dall'attributo taskAffinity. L'affinità di un'attività viene determinata leggendo l'affinità della sua attività principale. Pertanto, per definizione, un'attività radice è sempre in un'attività con la stessa affinità. Poiché le attività con modalità di avvio "singleTask" o "singleInstance" possono trovarsi solo alla radice di un'attività, la creazione di un nuovo elemento padre è limitata alle modalità "standard" e "singleTop". (vedi anche l'attributo launchMode).

android:alwaysRetainTaskState
Se lo stato dell'attività in cui si trova l'attività viene sempre mantenuto dal sistema. "true", se sì, e "false" se il sistema può reimpostare lo stato iniziale dell'attività in determinate situazioni. Il valore predefinito è "false". Questo attributo è significativo solo per l'attività principale di un'attività. Viene ignorato per tutte le altre attività.

Normalmente, il sistema cancella un'attività, rimuovendo tutte le attività dall'elenco sopra l'attività principale, in determinate situazioni quando l'utente riseleziona l'attività dalla schermata Home. In genere, questa operazione viene eseguita se l'utente non ha visitato l'attività per un determinato periodo di tempo, ad esempio 30 minuti.

Tuttavia, quando questo attributo è "true", gli utenti tornano sempre all'attività nel suo ultimo stato, indipendentemente dal modo in cui ci arrivano. Questo è utile in un'applicazione come un browser web in cui sono presenti molti stati, ad esempio più schede aperte, che gli utenti non vogliono perdere.

android:autoRemoveFromRecents
Indica se le attività avviate dall'attività con questo attributo rimangono nella schermata Recenti fino al completamento dell'ultima attività nell'attività. Se true, l'attività viene rimossa automaticamente dalla schermata Recenti. Questa operazione sostituisce l'utilizzo di FLAG_ACTIVITY_RETAIN_IN_RECENTS da parte del chiamante. Deve essere un valore booleano, ovvero "true" o "false".
android:banner
Una risorsa disegnabile che fornisce un banner grafico esteso per l'elemento associato. Utilizzalo con il tag <activity> per fornire un banner predefinito per un'attività specifica oppure con il tag <application> per fornire un banner per tutte le attività dell'applicazione.

Il sistema utilizza il banner per rappresentare un'app nella schermata Home di Android TV. Poiché il banner viene visualizzato solo nella schermata Home, viene specificato solo dalle applicazioni con un'attività che gestisce l'intent CATEGORY_LEANBACK_LAUNCHER.

Questo attributo è impostato come riferimento a una risorsa disegnabile contenente l'immagine, come "@drawable/banner". Non esiste un banner predefinito.

Per ulteriori informazioni, consulta la sezione Fornire un banner nella schermata Home in Inizia a utilizzare le app TV.

android:clearTaskOnLaunch
Indica se vengono rimosse tutte le attività dall'attività, ad eccezione dell'attività principale, quando l'attività viene riavviata dalla schermata Home. "true" se l'attività viene sempre rimossa dall'attività principale e "false" in caso contrario. Il valore predefinito è "false". Questo attributo è significativo solo per le attività che avviano una nuova attività, l'attività principale. Viene ignorato per tutte le altre attività nell'attività.

Quando il valore è "true", ogni volta che gli utenti avviano l'attività vengono portati all'attività principale indipendentemente dall'ultima operazione che hanno svolto nell'attività e dal fatto che abbiano usato il pulsante Indietro o Home per abbandonarla. Quando il valore è "false", è possibile annullare le attività dell'attività in alcune situazioni, ma non sempre. Per ulteriori informazioni, consulta l'attributo alwaysRetainTaskState.

Supponiamo che l'utente avvii l'attività P dalla schermata Home e da lì va all'attività Q. L'utente tocca poi Home e torna all'attività P. Normalmente, l'utente vede l'attività Q, poiché è l'ultima cosa che ha fatto nell'attività di P. Tuttavia, se il flag viene impostato su "true", tutte le attività correlate, in questo caso Q, vengono rimosse quando l'utente avvia l'attività P dalla schermata Home. Di conseguenza, l'utente vede solo la P quando torna all'attività.

Se questo attributo e allowTaskReparenting sono entrambi "true", tutte le attività di cui è possibile assegnare di nuovo l'elemento padre vengono spostate nell'attività con cui condividono un'affinità. Le attività rimanenti vengono quindi eliminate.

Questo attributo viene ignorato se FLAG_ACTIVITY_RESET_TASK_IF_NEEDED non è impostato.

android:colorMode

Specifica la modalità colore dell'attività. Se specificato, può essere hdr o wideColorGamut.

Se hdr, richiede che l'attività venga visualizzata in un intervallo dinamico elevato, se il dispositivo la supporta.

Se wideColorGamut, richiede che l'attività venga visualizzata in modalità con gamma di colori ampia sui dispositivi compatibili. In modalità ampia gamma di colori, il rendering di una finestra può essere al di fuori della gamma di colori SRGB per mostrare colori più vivaci. Se il dispositivo non supporta il rendering con ampia gamma di colori, questo attributo non ha effetto. Per ulteriori informazioni sul rendering in modalità a colori estesi, consulta Migliorare la grafica con contenuti a colori ampi.

android:configChanges
Elenca le modifiche alla configurazione che l'attività gestisce in sé. Quando si verifica una modifica della configurazione in fase di runtime, l'attività viene arrestata e riavviata per impostazione predefinita, ma la dichiarazione di una configurazione con questo attributo impedisce il riavvio dell'attività. Invece, l'attività rimane in esecuzione e viene richiamato il relativo metodo onConfigurationChanged().

Nota: utilizza questo attributo solo in casi speciali per migliorare le prestazioni e la reattività dell'applicazione. Per maggiori informazioni, vedi Gestire le modifiche alla configurazione.

Le seguenti stringhe sono valori validi per questo attributo. Più valori sono separati da |, ad esempio "locale|navigation|orientation".

Valore Descrizione
"density" Una modifica della densità del display, ad esempio quando l'utente specifica una scala di visualizzazione diversa o quando un display diverso è ora attivo.

Aggiunta nel livello API 24.

"fontScale" Una modifica al fattore di ridimensionamento del carattere, ad esempio quando l'utente seleziona una nuova dimensione globale del carattere.
"keyboard" Una modifica al tipo di tastiera, ad esempio quando l'utente collega una tastiera esterna.
"keyboardHidden" Una modifica all'accessibilità della tastiera, ad esempio quando l'utente rivela la tastiera hardware.
"layoutDirection" Una modifica alla direzione del layout, ad esempio da sinistra a destra (LTR) a destra a sinistra (RTL).

Aggiunta nel livello API 17.

"locale" Una modifica alle impostazioni internazionali, ad esempio quando l'utente seleziona una nuova lingua in cui viene visualizzato il testo.
"mcc" Una modifica al codice paese mobile IMSI (Centro clienti) quando viene rilevata una SIM che aggiorna il Centro clienti.
"mnc" Una modifica al codice di rete mobile IMSI (MNC) quando viene rilevata una SIM che aggiorna la MNC.
"navigation" Passaggio dell'AT al tipo di navigazione (trackball o D-pad). In genere questo non accade.
"orientation"

Una modifica dell'orientamento dello schermo, ad esempio quando l'utente ruota il dispositivo.

Nota: se la tua applicazione ha come target Android 3.2 (livello API 13) o versioni successive, dichiara anche le configurazioni "screenLayout" e "screenSize", poiché il layout e le dimensioni dello schermo possono cambiare quando un dispositivo passa dall'orientamento verticale a quello orizzontale.

"screenLayout" Una modifica al layout dello schermo, ad esempio quando si attiva un altro display.
"screenSize" Una modifica alle dimensioni dello schermo disponibili attualmente.

Ciò rappresenta una modifica delle dimensioni attualmente disponibili, rispetto alle proporzioni attuali, quindi cambia quando l'utente passa dalla modalità orizzontale a quella verticale e viceversa.

Aggiunta nel livello API 13.

"smallestScreenSize" Una modifica alle dimensioni fisiche dello schermo.

Si tratta di una variazione delle dimensioni a prescindere dall'orientamento, pertanto cambia solo quando cambiano le effettive dimensioni dello schermo fisico, ad esempio quando si passa a un display esterno. Una modifica a questa configurazione corrisponde a una modifica nella configurazione di smallestWidth.

Aggiunta nel livello API 13.

"touchscreen" Passa al touchscreen. In genere questo non accade.
"uiMode" Una modifica alla modalità dell'interfaccia utente, ad esempio quando l'utente posiziona il dispositivo in una scrivania o in un dock per auto, oppure quando cambia la modalità notturna. Per maggiori informazioni sulle diverse modalità UI, consulta UiModeManager.

Aggiunta nel livello API 8.

Tutte queste modifiche alla configurazione possono influire sui valori delle risorse visualizzati dall'applicazione. Pertanto, quando onConfigurationChanged() viene chiamato, di solito è necessario recuperare di nuovo tutte le risorse, inclusi layout di visualizzazione e disegnabili, per gestire correttamente la modifica.

Nota:per gestire le modifiche alla configurazione multi-finestra, utilizza sia "screenLayout" che "smallestScreenSize". La modalità multi-finestra è supportata in Android 7.0 (livello API 24) o versioni successive.

android:directBootAware

Indica se l'attività è consapevole all'avvio diretto, ovvero se può essere eseguita prima che l'utente sblocchi il dispositivo.

Nota : durante l'avvio diretto, un'attività nella tua applicazione può accedere soltanto ai dati archiviati nello spazio di archiviazione protetto dal dispositivo.

Il valore predefinito è "false".

android:documentLaunchMode
Specifica in che modo una nuova istanza di un'attività viene aggiunta a un'attività a ogni avvio. Questo attributo consente all'utente di visualizzare più documenti della stessa applicazione nella schermata Recenti.

Questo attributo ha quattro valori, che producono i seguenti effetti quando l'utente apre un documento con l'applicazione:

Valore Descrizione
"intoExisting" Il sistema cerca un'attività il cui ComponentName e URI dati dell'intent di base corrispondano a quelli dell'intent di avvio. Se il sistema trova tale attività, la cancella e si riavvia e l'attività root riceve una chiamata a onNewIntent(android.content.Intent). Se il sistema non trova tale attività, ne crea una nuova.
"always" L'attività crea una nuova attività per il documento, anche se quest'ultimo è già stato aperto. Equivale a impostare i flag FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK.
"none" L'attività non crea una nuova attività per l'attività. Questo è il valore predefinito, che crea una nuova attività solo quando è impostato FLAG_ACTIVITY_NEW_TASK. La schermata Recenti tratta l'attività per impostazione predefinita: visualizza una singola attività per l'app, che riprende dall'ultima attività richiamata dall'utente.
"never" L'attività non viene lanciata in un nuovo documento anche se l'intent contiene FLAG_ACTIVITY_NEW_DOCUMENT. L'impostazione di questa opzione sostituisce il comportamento dei flag FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK, se uno di questi è impostato nell'attività e la schermata Recenti mostra una singola attività per l'app, che riprende dall'ultima attività richiamata dall'utente.

Nota: per i valori diversi da "none" e "never", l'attività è definita con launchMode="standard". Se questo attributo non è specificato, viene utilizzato documentLaunchMode="none".

android:enabled
Indica se il sistema può creare un'istanza dell'attività. È "true", se può essere, e "false" in caso contrario. Il valore predefinito è "true".

L'elemento <application> ha il proprio attributo enabled che si applica a tutti i componenti dell'applicazione, incluse le attività. Gli attributi <application> e <activity> devono essere entrambi "true", in quanto sono entrambi per impostazione predefinita, affinché il sistema possa creare un'istanza dell'attività. Se uno dei due è "false", non è possibile creare un'istanza.

android:enableOnBackInvokedCallback
Questo flag ti consente di attivare le animazioni di sistema predittive a livello di attività. Questo comportamento rende più gestibile la migrazione delle app multiattività di grandi dimensioni ai gesti predittivi sul retro.

L'impostazione android:enableOnBackInvokedCallback=false disattiva le animazioni predittive indietro a livello di attività o di app, a seconda di dove imposti il tag, e indica al sistema di ignorare le chiamate all'API della piattaforma OnBackInvokedCallback.

android:excludeFromRecents
Indica se l'attività avviata da questa attività viene esclusa dalla schermata Recenti. In altre parole, quando questa attività è l'attività principale di una nuova attività, questo attributo determina se l'attività viene visualizzata nell'elenco delle app recenti. È "true" se l'attività viene esclusa dall'elenco; "false" se è inclusa. Il valore predefinito è "false".

android:exported
Se l'attività può essere avviata da componenti di altre applicazioni:

  • Se "true", l'attività è accessibile a qualsiasi app e può essere avviata dal nome esatto della classe.
  • Se "false", l'attività può essere avviata solo dai componenti della stessa applicazione, da applicazioni con lo stesso ID utente o da componenti di sistema con privilegi. Questo è il valore predefinito se non sono presenti filtri per intent.

Se un'attività nella tua app include filtri per intent, imposta questo elemento su "true" per consentire ad altre app di avviarlo. Ad esempio, se l'attività è l'attività principale dell'app e include category android.intent.category.LAUNCHER.

Se questo elemento è impostato su "false" e un'app tenta di avviare l'attività, il sistema genera un ActivityNotFoundException.

Questo attributo non è l'unico modo per limitare l'esposizione di un'attività ad altre applicazioni. Le autorizzazioni vengono utilizzate anche per limitare le entità esterne che possono richiamare l'attività. Vedi l'attributo permission.

android:finishOnTaskLaunch
Indica se un'istanza esistente dell'attività viene arrestata, ad eccezione dell'attività root, quando l'utente riavvia l'attività scegliendo l'attività dalla schermata Home. È "true" se viene chiuso e "false" in caso contrario. Il valore predefinito è "false".

Se questo attributo e allowTaskReparenting sono entrambi "true", questo attributo ha la precedenza sull'altro. L'affinità dell'attività viene ignorata. L'attività non viene assegnata nuovamente, ma viene eliminata.

Questo attributo viene ignorato se FLAG_ACTIVITY_RESET_TASK_IF_NEEDED non è impostato.

android:hardwareAccelerated
Indica se il rendering con accelerazione hardware è abilitato per questa attività. "true" se è abilitata e "false" in caso contrario. Il valore predefinito è "false".

Su Android 3.0 e versioni successive, per le applicazioni è disponibile un renderer OpenGL con accelerazione hardware al fine di migliorare le prestazioni di molte operazioni di grafica 2D comuni. Quando il renderer con accelerazione hardware è attivato, la maggior parte delle operazioni in Canvas, Paint, Xfermode, ColorFilter, Shader e Camera vengono accelerate.

Questo si traduce in animazioni più fluide, scorrimento più fluido e migliore reattività in generale, anche per applicazioni che non utilizzano esplicitamente le librerie OpenGL del framework. A causa dell'aumento delle risorse necessarie per abilitare l'accelerazione hardware, la tua app consuma più RAM.

Non tutte le operazioni OpenGL 2D vengono accelerate. Se attivi il renderer con accelerazione hardware, verifica se la tua applicazione è in grado di utilizzarlo senza errori.

android:icon
Un'icona che rappresenta l'attività. L'icona viene mostrata agli utenti quando è richiesta una rappresentazione dell'attività sullo schermo. Ad esempio, le icone di attività che avviano attività vengono visualizzate nella finestra Avvio app. L'icona è spesso accompagnata da un'etichetta; per informazioni sull'etichetta, fai riferimento all'attributo android:label.

Questo attributo è impostato come riferimento a una risorsa disegnabile contenente la definizione dell'immagine. Se non è impostata, viene utilizzata l'icona specificata per l'applicazione nel suo insieme. Per ulteriori informazioni, consulta l'attributo icon dell'elemento <application>.

L'icona dell'attività, impostata qui o dall'elemento <application>, è anche l'icona predefinita per tutti i filtri per intent dell'attività. Per maggiori informazioni, consulta l'attributo icon dell'elemento <intent-filter>.

android:immersive
Imposta l'impostazione della modalità immersiva per l'attività corrente. Se è "true", per il membro ActivityInfo.flags è sempre impostato il FLAG_IMMERSIVE bit, anche se la modalità immersiva cambia in fase di runtime utilizzando il metodo setImmersive().
android:label
Un'etichetta leggibile per l'attività. L'etichetta viene visualizzata sullo schermo quando l'attività è presentata all'utente. Viene spesso visualizzata insieme all'icona dell'attività. Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo insieme. Controlla l'attributo label dell'elemento <application>.

L'etichetta dell'attività, impostata qui o dall'elemento <application>, è anche l'etichetta predefinita per tutti i filtri per intent dell'attività. Per maggiori informazioni, consulta l'attributo label dell'elemento <intent-filter>.

L'etichetta è impostata come riferimento a una risorsa stringa, in modo che possa essere localizzata come altre stringhe nell'interfaccia utente. Tuttavia, per praticità, durante lo sviluppo dell'applicazione, puoi anche impostarla come stringa non elaborata.

android:launchMode
Un'istruzione su come avviare l'attività. Esistono cinque modalità che operano in combinazione con i flag di attività (costanti FLAG_ACTIVITY_*) negli oggetti Intent per determinare cosa succede quando l'attività viene chiamata per gestire un intent:

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

La modalità predefinita è "standard".

Come mostrato nella tabella seguente, le modalità si suddividono in due gruppi principali, con le attività "standard" e "singleTop" su un lato e le attività "singleTask", "singleInstance" e "singleInstancePerTask" dall'altro. Un'attività con la modalità di avvio "standard" o "singleTop" può essere creata più volte.

Le istanze possono appartenere a qualsiasi attività e trovarsi ovunque In genere, vengono avviati nell'attività denominata startActivity(), a meno che l'oggetto Intent non contenga un'istruzione FLAG_ACTIVITY_NEW_TASK, nel qual caso viene scelta un'attività diversa. Per maggiori informazioni, consulta l'attributo taskAffinity.

Al contrario, le attività "singleTask", "singleInstance" e "singleInstancePerTask" hanno comportamenti diversi. "singleInstancePerTask" è sempre alla radice dell'attività. Inoltre, il dispositivo può contenere una sola istanza alla volta dell'attività "singleInstance", mentre l'attività "singleInstancePerTask può essere creata più volte in attività diverse se è impostata l'opzione FLAG_ACTIVITY_MULTIPLE_TASK o FLAG_ACTIVITY_NEW_DOCUMENT.

Un'attività con la modalità di avvio "singleTask" combina i comportamenti di "singleInstance" e "singleInstancePerTask": l'attività può essere creata più volte e può trovarsi ovunque in un'attività della stessa taskAffinity. Tuttavia, il dispositivo può contenere una sola attività per individuare l'attività "singleTask" alla radice dell'attività.

Le modalità "standard" e "singleTop" sono diverse per un aspetto: ogni volta che esiste un nuovo intent per un'attività "standard", viene creata una nuova istanza della classe per rispondere a questo intento. Ogni istanza gestisce un singolo intent. Analogamente, può essere creata una nuova istanza di un'attività "singleTop" per gestire un nuovo intent.

Tuttavia, se l'attività di destinazione dispone già di un'istanza dell'attività in cima al proprio stack, l'istanza riceve il nuovo intent in una chiamata onNewIntent(). Non viene creata una nuova istanza. In caso contrario, se un'istanza esistente dell'attività "singleTop" si trova nell'attività di destinazione ma non in cima allo stack o se si trova in cima a uno stack, ma non nell'attività di destinazione, viene creata una nuova istanza e ne viene eseguito il push nello stack.

Allo stesso modo, se l'utente apre un'attività nello stack attuale, il comportamento è determinato dalla modalità di avvio dell'attività principale. Se l'attività principale ha la modalità di avvio singleTop (o l'intent up contiene FLAG_ACTIVITY_CLEAR_TOP), l'attività principale viene portato in cima all'elenco e il suo stato viene conservato.

L'intent di navigazione viene ricevuto dal metodo onNewIntent() dell'attività principale. Se l'attività principale ha la modalità di avvio standard e l'intent up non contiene FLAG_ACTIVITY_CLEAR_TOP, l'attività corrente e l'attività principale si separano dall'elenco e viene creata una nuova istanza dell'attività principale per ricevere l'intent di navigazione.

La modalità "singleInstance" differisce anche da "singleTask" e "singleInstancePerTask" per un solo aspetto: un'attività con la modalità di avvio "singleTask" o "singleInstancePerTask" consente ad altre attività, necessariamente "standard" e "singleTop", di farne parte.

Un'attività "singleInstance", invece, consente a nessun'altra attività di far parte della sua attività. Deve essere l'unica attività nell'attività. Se viene avviata un'altra attività, questa viene assegnata a un'altra attività, come se l'intent FLAG_ACTIVITY_NEW_TASK fosse presente.

casi d'uso Modalità di avvio Più istanze? Commenti
Lanci normali per la maggior parte delle attività "standard" Predefinita. Il sistema crea sempre una nuova istanza dell'attività nell'attività target e instrada l'intent a questa attività.
"singleTop" In modo condizionale Se esiste già un'istanza dell'attività nella parte superiore dell'attività di destinazione, il sistema instrada l'intent a quell'istanza tramite una chiamata al metodo onNewIntent(), anziché creare una nuova istanza dell'attività.
Lanci specializzati
(sconsigliato per uso generico)
"singleTask" In modo condizionale Il sistema crea l'attività alla radice di una nuova attività o la individua su un'attività esistente con la stessa affinità. Se un'istanza dell'attività esiste già ed è alla radice dell'attività, il sistema indirizza l'intent all'istanza esistente tramite una chiamata al metodo onNewIntent(), anziché crearne uno nuovo.
"singleInstance" No Come "singleTask", ad eccezione del fatto che il sistema non avvia altre attività nell'attività che contiene l'istanza. L'attività è sempre l'unico e l'unico membro della sua attività.
"singleInstancePerTask" In modo condizionale L'attività può essere eseguita solo come attività principale dell'attività, ovvero la prima attività che l'ha creata. Di conseguenza, in un'attività è presente una sola istanza di questa attività. Tuttavia, è possibile creare un'istanza dell'attività più volte in attività diverse.

Come mostrato nella tabella precedente, "standard" è la modalità predefinita ed appropriata per la maggior parte dei tipi di attività. "singleTop" è inoltre una modalità di avvio comune e utile per molti tipi di attività. Le altre modalità "singleTask", "singleInstance" e "singleInstancePerTask" non sono appropriate per la maggior parte delle applicazioni. Generano un modello di interazione che probabilmente non è familiare agli utenti ed è molto diverso dalla maggior parte delle altre applicazioni.

Indipendentemente dalla modalità di avvio scelta, assicurati di testare l'usabilità dell'attività durante l'avvio e quando torni da altre attività e attività utilizzando il pulsante Indietro.

Per maggiori informazioni sulle modalità di avvio e sulla loro interazione con i flag Intent, consulta Attività e stack posteriore.

android:lockTaskMode
Indica la modalità di presentazione di questa attività da parte del sistema quando il dispositivo è in esecuzione in modalità di blocco attività.

Android può eseguire le attività in una modalità immersiva simile a quella di un kiosk, chiamata modalità di blocco attività. Quando il sistema viene eseguito in modalità di blocco attività, in genere gli utenti dei dispositivi non possono vedere le notifiche, accedere alle app non incluse nella lista consentita o tornare alla schermata Home, a meno che l'app Home non sia inclusa nella lista consentita.

Quando il sistema è in modalità di blocco attività, è possibile eseguire solo le app incluse nella lista consentita da un controller dei criteri dei dispositivi (DPC). Tuttavia, le app di sistema e con privilegi possono essere eseguite in modalità di blocco attività senza essere inserite nella lista consentita.

Il valore può essere uno qualsiasi dei seguenti valori stringa R.attr.lockTaskMode:

Valore Descrizione
"normal" Valore predefinito. Questo è il valore predefinito. Le attività non vengono avviate in modalità di blocco attività, ma possono essere inserite lì chiamando startLockTask().
"never"

Le attività non vengono avviate in modalità lockTask e l'utente del dispositivo non può bloccare queste attività dalla schermata Recenti.

Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app senza privilegi con questo valore vengono trattate come normal.

"if_whitelisted" Se il DPC autorizza questo pacchetto utilizzando DevicePolicyManager.setLockTaskPackages(), questa modalità è identica a always, ad eccezione del fatto che l'attività deve chiamare stopLockTask() prima di poter essere completata se è l'ultima attività bloccata. Se il DPC non autorizza questo pacchetto, questa modalità è identica a normal.
"always"

Le attività rooted a questa attività vengono sempre avviate in modalità di blocco attività. Se il sistema è già in modalità di blocco attività quando viene avviata questa attività, la nuova attività viene avviata sopra quella corrente. Le attività avviate in questa modalità possono uscire dalla modalità di blocco attività chiamando finish().

Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app senza privilegi con questo valore vengono trattate come normal.

Questo attributo è stato introdotto nel livello API 23.

android:maxRecents
Il numero massimo di attività collegate a questa attività nella schermata Recenti. Quando viene raggiunto questo numero di voci, il sistema rimuove l'istanza meno recente dalla schermata Recenti. I valori validi sono numeri interi da 1 a 50 o da 1 a 25 sui dispositivi con memoria ridotta. Zero non valido. Il valore predefinito è 16.
android:maxAspectRatio

Le proporzioni massime supportate dall'attività. Se l'app viene eseguita su un dispositivo con proporzioni più ampie, il sistema applica automaticamente le modifiche alle proporzioni dell'app, lasciando alcune parti dello schermo inutilizzate in modo che l'app possa essere eseguita con le proporzioni massime specificate.

Le proporzioni massime sono espresse come forma decimale del quoziente della dimensione più lunga di un dispositivo divisa per la dimensione più corta. Ad esempio, se le proporzioni massime sono 7:3, imposta il valore di questo attributo su 2,33.

Sui dispositivi non indossabili, il valore di questo attributo deve essere pari o superiore a 1,33. Sui dispositivi indossabili, deve essere pari o superiore a 1,0. In caso contrario, il sistema ignora il valore impostato.

Nota: questo attributo viene ignorato se l'attività ha resizeableActivity impostato su true, dal momento che ciò significa che la tua attività supporta qualsiasi dimensione.

Per maggiori informazioni su questo attributo, consulta Dichiarare le proporzioni massime.

android:multiprocess
Indica se è possibile avviare un'istanza dell'attività nel processo del componente che l'ha avviata. È "true" se può essere e "false" in caso contrario. Il valore predefinito è "false".

Normalmente, una nuova istanza di un'attività viene avviata nel processo dell'applicazione che l'ha definita, in modo che tutte le istanze dell'attività vengano eseguite nello stesso processo. Tuttavia, se questo flag è impostato su "true", le istanze dell'attività possono essere eseguite in più processi, consentendo al sistema di creare istanze ovunque vengano utilizzate e le autorizzazioni consentite lo consentono, qualcosa che non è quasi mai necessario o desiderabile.

android:name
Il nome della classe che implementa l'attività, una sottoclasse di Activity. Il valore dell'attributo è solitamente un nome completo di classe, come "com.example.project.ExtracurricularActivity". Tuttavia, ad esempio, se il primo carattere del nome è un punto, ad esempio ".ExtracurricularActivity", viene aggiunto allo spazio dei nomi specificato nel file build.gradle.

Dopo aver pubblicato l'applicazione, non modificare questo nome, a meno che non imposti android:exported="false". Non esiste un valore predefinito. È necessario specificare il nome.

android:noHistory
Se l'attività viene rimossa dall'elenco delle attività e completata chiamando il metodo finish() quando l'utente esce dall'elenco e non è più visibile sullo schermo. È "true" se ha finito e "false" in caso contrario. Il valore predefinito è "false".

Il valore "true" indica che l'attività non lascia una traccia storica. Non rimane nello stack delle attività per l'attività, quindi l'utente non è in grado di accedervi di nuovo. In questo caso, onActivityResult() non viene mai chiamato se avvii un'altra attività per un risultato di questa attività.

Questo attributo è stato introdotto nel livello API 3.

android:parentActivityName
Il nome della classe del padre logico dell'attività. Il nome qui deve corrispondere a quello della classe assegnato all'attributo android:name dell'elemento <activity> corrispondente.

Il sistema legge questo attributo per determinare quale attività avviare quando l'utente tocca il pulsante Su nella barra delle azioni. Il sistema può utilizzare queste informazioni anche per sintetizzare uno stack precedente di attività con TaskStackBuilder.

Per supportare i livelli API 4-16, puoi anche dichiarare l'attività principale con un elemento <meta-data> che specifica un valore per "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>

Per ulteriori informazioni su come dichiarare l'attività padre per supportare la navigazione Up, consulta Fornire la navigazione up.

Questo attributo è stato introdotto nel livello API 16.

android:persistableMode

Definisce in che modo un'istanza di un'attività viene conservata all'interno di un'attività contenitore nei riavvii dei dispositivi.

Se l'attività principale di un'attività imposta il valore di questo attributo su persistRootOnly, viene conservata solo l'attività principale. In caso contrario, vengono esaminate le attività che si trovano in una posizione più alta nello stack precedente dell'attività; tutte le attività che impostano il valore di questo attributo su persistAcrossReboots vengono conservate.

Se utilizzi questo attributo, devi impostarne il valore su uno dei seguenti:

Valore Descrizione
persistRootOnly Valore predefinito. Al riavvio del sistema, l'attività di attività viene conservata, ma viene utilizzato solo l'intent di avvio dell'attività principale.

Quando l'intent di avvio dell'app carica l'attività principale dell'app, quest'ultima non riceve un oggetto PersistableBundle. Di conseguenza, non utilizzare onSaveInstanceState() per preservare lo stato dell'attività root dell'app durante il riavvio del dispositivo.

Nota: questo valore dell'attributo influisce sul comportamento della tua app solo se è impostato sull'attività principale dell'app.

persistAcrossReboots

Lo stato di questa attività viene conservato, insieme allo stato di ogni attività più in alto nello stack posteriore, che ha il proprio attributo persistableMode impostato su persistAcrossReboots. Se un'attività non ha un attributo persistableMode impostato su persistAcrossReboots o se viene avviata utilizzando il flag Intent.FLAG_ACTIVITY_NEW_DOCUMENT, l'attività, insieme a tutte le attività più in alto nello stack di backup, non viene conservata.

Quando un intent carica un'attività il cui attributo persistableMode è impostato su persistAcrossReboots nella tua app, l'attività riceve un oggetto PersistableBundle nel suo metodo onCreate(). Di conseguenza, puoi utilizzare onSaveInstanceState() per mantenere lo stato di un'attività sul riavvio del dispositivo, a condizione che l'attributo persistableMode sia impostato su persistAcrossReboots.

Nota: questo valore dell'attributo influisce sul comportamento della tua app anche se è impostato su un'attività diversa dall'attività principale dell'app.

persistNever

Lo stato dell'attività non viene conservato.

Nota: questo valore dell'attributo influisce sul comportamento della tua app solo se è impostato sull'attività principale dell'app.

Questo attributo è stato introdotto nel livello API 21.

android:permission
Il nome di un'autorizzazione che i client devono avere per avviare l'attività o altrimenti convincerla a rispondere a un intento. Se al chiamante di startActivity() o startActivityForResult() non viene concessa l'autorizzazione specificata, il relativo intent non viene recapitato nell'attività.

Se questo attributo non è impostato, l'autorizzazione impostata dall'attributo <application> dell'elemento permission si applica all'attività. Se non è impostato nessuno dei due attributi, l'attività non è protetta da un'autorizzazione.

Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni della panoramica del file manifest dell'app e i Suggerimenti per la sicurezza.

android:process
Il nome del processo in cui viene eseguita l'attività. Normalmente, tutti i componenti di un'applicazione vengono eseguiti in un nome di processo predefinito creato per l'applicazione e non è necessario utilizzare questo attributo. Tuttavia, se necessario, puoi sostituire il nome del processo predefinito con questo attributo, in modo da distribuire i componenti dell'app su più processi.

Se il nome assegnato a questo attributo inizia con i due punti (:), quando è necessario viene creato un nuovo processo, privato per l'applicazione, in cui l'attività viene eseguita.

Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con quel nome, a condizione che abbia l'autorizzazione necessaria. In questo modo i componenti di applicazioni diverse possono condividere un processo, riducendo l'utilizzo delle risorse.

L'attributo process dell'elemento <application> può impostare un nome di processo predefinito diverso per tutti i componenti.

android:relinquishTaskIdentity
Indica se l'attività concede i propri identificatori attività a un'attività di livello superiore nello stack di attività. Un'attività la cui attività principale ha questo attributo impostato su "true" sostituisce la Intent di base con quella dell'attività successiva.

Se anche l'attività successiva ha questo attributo impostato su "true", restituisce la Intent di base a qualsiasi attività avviata nella stessa attività. Questo continua per ogni attività finché non viene rilevata un'attività con questo attributo impostato su "false". Il valore predefinito è "false".

Questo attributo impostato su "true" consente inoltre di utilizzare l'attività ActivityManager.TaskDescription per cambiare etichette, colori e icone nella schermata Recenti.

android:resizeableActivity

Consente di specificare se l'app supporta la modalità multi-finestra. Puoi impostare questo attributo nell'elemento <activity> o <application>.

Se imposti questo attributo su "true", l'utente può avviare l'attività in modalità schermo diviso e in formato libero. Se imposti l'attributo su "false", l'app non può essere testata o ottimizzata per un ambiente multi-finestra. Il sistema può comunque impostare l'attività in modalità multi-finestra con la modalità di compatibilità applicata.

L'impostazione di questo attributo su "false" non garantisce che non ci siano altre app in modalità multi-finestra visibili sullo schermo, ad esempio in Picture in picture o su altri display. Pertanto, l'impostazione di questo flag non significa che l'app ha accesso esclusivo alle risorse.

Se la tua app ha come target il livello API 24 o un livello successivo e non specifichi un valore per questo attributo, per impostazione predefinita il valore dell'attributo sarà "true".

Se la tua app ha come target il livello API 31 o versioni successive, questo attributo funziona in modo diverso su schermi piccoli e grandi:

  • Schermi grandi (sw >= 600 dp): tutte le app supportano la modalità multi-finestra. L'attributo indica se un'app può essere ridimensionata, non se supporta la modalità multi-finestra. Se resizeableActivity="false", l'app viene attivata in modalità di compatibilità quando necessario per conformarsi alle dimensioni del display.
  • Schermi piccoli (sw < 600 dp): se resizeableActivity="true" e l'altezza minima e la larghezza dell'attività rientrano nei requisiti multi-finestra, l'app supporta la modalità multi-finestra. Se resizeableActivity="false", l'app non supporta la modalità multi-finestra indipendentemente dall'altezza e dalla larghezza minime dell'attività.

Nota:i produttori di dispositivi possono ignorare il comportamento del livello API 31.

Questo attributo è stato aggiunto nel livello API 24.

Nota: il valore dell'attività principale di un'attività viene applicato a tutte le attività aggiuntive avviate nell'attività. Ciò significa che se l'attività root di un'attività è ridimensionabile, il sistema tratta tutte le altre attività nell'attività come ridimensionabili. Se l'attività root non è ridimensionabile, le altre attività nell'attività non sono ridimensionabili.

android:screenOrientation

L'orientamento dell'attività sul display del dispositivo.

Su Android 7.0 (livello API 24) e versioni successive, il sistema ignora le modifiche di runtime relative a questo attributo se l'attività è in modalità multi-finestra.

Su Android 12 (livello API 31) e versioni successive, i produttori di dispositivi possono configurare i singoli schermi dei dispositivi (ad esempio lo schermo di un tablet pieghevole) in modo da ignorare la specifica dell'orientamento e forzare un'app specifica come solo verticale, ma adattata al formato letterbox sui display orizzontali. In questo modo l'app ha sempre proporzioni verticali, ma orienta l'app per una migliore usabilità.

Il valore può essere una qualsiasi delle seguenti stringhe:

"unspecified" Il valore predefinito. Il sistema sceglie l'orientamento. Il criterio che utilizza, e di conseguenza le scelte effettuate in contesti specifici, potrebbero variare da dispositivo a dispositivo.
"behind" Lo stesso orientamento dell'attività immediatamente sotto di essa nell'elenco delle attività.
"landscape" Orientamento orizzontale (il display è più largo che alto).
"portrait" Orientamento verticale (il display è più alto che largo).
"reverseLandscape" Orientamento orizzontale nella direzione opposta rispetto all'orientamento normale. Aggiunta nel livello API 9.
"reversePortrait" Orientamento verticale nella direzione opposta rispetto all'orientamento normale. Aggiunta nel livello API 9.
"sensorLandscape" Orientamento orizzontale, ma può essere normale o in orizzontale in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Aggiunta nel livello API 9.
"sensorPortrait" Orientamento verticale, ma può essere normale o invertito in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Tuttavia, a seconda della configurazione del dispositivo, la rotazione capovolta potrebbe non essere consentita. Aggiunta nel livello API 9.
"userLandscape" Orientamento orizzontale, ma può essere normale o in orizzontale in base al sensore del dispositivo e alle preferenze dell'utente. Aggiunta nel livello API 18.
"userPortrait" Orientamento verticale, ma può essere normale o invertito, in base al sensore del dispositivo e alle preferenze dell'utente. Tuttavia, a seconda della configurazione del dispositivo, la rotazione capovolta potrebbe non essere consentita. Aggiunta nel livello API 18.
"sensor" Il sensore di orientamento del dispositivo determina l'orientamento. L'orientamento del display dipende da come l'utente tiene il dispositivo. Cambia quando l'utente ruota il dispositivo. Alcuni dispositivi, però, non ruotano in tutti e quattro gli orientamenti possibili per impostazione predefinita. Per utilizzare tutti e quattro gli orientamenti, utilizza "fullSensor". Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore.
"fullSensor" Il sensore di orientamento del dispositivo determina l'orientamento per uno dei quattro orientamenti. È simile a "sensor", tranne per il fatto che consente uno qualsiasi dei quattro orientamenti dello schermo possibili, indipendentemente da ciò che supporta normalmente il dispositivo. Ad esempio, alcuni dispositivi di solito non utilizzano l'orientamento verticale o orizzontale inverso, ma ciò consente questi orientamenti. Aggiunta nel livello API 9.
"nosensor" L'orientamento viene determinato senza riferimento a un sensore di orientamento fisico. Il sensore viene ignorato, quindi il display non ruota in base al modo in cui l'utente sposta il dispositivo.
"user" L'orientamento preferito corrente dell'utente.
"fullUser" Se l'utente ha bloccato la rotazione basata sul sensore, si comporta come user, altrimenti si comporta come fullSensor e consente uno dei quattro possibili orientamenti dello schermo. Aggiunta nel livello API 18.
"locked" Blocca l'orientamento alla rotazione corrente, qualsiasi sia. Aggiunta nel livello API 18.

Nota: quando dichiari uno dei valori orizzontali o verticali, è considerato un requisito obbligatorio per l'orientamento in cui viene eseguita l'attività. Il valore dichiarato consente di filtrare in base a servizi come Google Play, pertanto la tua applicazione è disponibile solo per i dispositivi che supportano l'orientamento richiesto dalle tue attività. Ad esempio, se dichiari "landscape", "reverseLandscape" o "sensorLandscape", la tua applicazione è disponibile solo per i dispositivi che supportano l'orientamento orizzontale.

Inoltre, dichiara esplicitamente che la tua applicazione richiede l'orientamento verticale o orizzontale con l'elemento <uses-feature>, ad esempio <uses-feature android:name="android.hardware.screen.portrait"/>. Si tratta di un comportamento di filtro fornito da Google Play e da altri servizi che lo supportano e la piattaforma stessa non controlla se la tua app può essere installata quando un dispositivo supporta solo determinati orientamenti.

android:showForAllUsers

Indica se l'attività viene mostrata quando l'utente corrente del dispositivo è diverso dall'utente che ha avviato l'attività. Puoi impostare questo attributo su un valore letterale, come "true" o "false", oppure puoi impostarlo su un attributo di risorsa o di tema che contiene un valore booleano.

Questo attributo è stato aggiunto nel livello API 23.

android:stateNotNeeded
Indica se l'attività può essere terminata e riavviata correttamente senza averne salvato lo stato. È "true" se può essere riavviato senza riferimento allo stato precedente e "false" se è richiesto lo stato precedente. Il valore predefinito è "false".

Normalmente, prima che un'attività venga arrestata temporaneamente per risparmiare risorse, viene chiamato il relativo metodo onSaveInstanceState(). Questo metodo archivia lo stato attuale dell'attività in un oggetto Bundle, che viene poi passato a onCreate() al riavvio dell'attività. Se questo attributo è impostato su "true", onSaveInstanceState() potrebbe non essere chiamato e onCreate() viene passato null anziché Bundle, perché è il momento in cui inizia l'attività per la prima volta.

L'impostazione "true" indica che l'attività può essere riavviata senza essere conservata. Ad esempio, l'attività che mostra la schermata Home usa questa impostazione per fare in modo che non venga rimossa se si verifica un arresto anomalo per qualche motivo.

android:supportsPictureInPicture

Consente di specificare se l'attività supporta la visualizzazione Picture in picture.

android:taskAffinity
L'attività per cui l'attività ha un'affinità. Le attività con la stessa affinità concettualmente appartengono alla stessa attività, alla stessa "applicazione" dal punto di vista dell'utente. L'affinità di un'attività è determinata dall'affinità della sua attività principale.

L'affinità determina due cose: l'attività per la quale viene ricondotta l'attività come padre (vedi l'attributo allowTaskReparenting) e l'attività che ospita l'attività quando viene avviata con il flag FLAG_ACTIVITY_NEW_TASK.

Per impostazione predefinita, tutte le attività in un'applicazione hanno la stessa affinità. Puoi impostare questo attributo in modo da raggrupparli in modo diverso e persino inserire attività definite in applicazioni diverse all'interno della stessa attività. Per specificare che l'attività non ha un'affinità per nessuna attività, impostala su una stringa vuota.

Se questo attributo non è impostato, l'attività eredita l'affinità impostata per l'applicazione. Vedi l'attributo taskAffinity dell'elemento <application>. Il nome dell'affinità predefinita per un'applicazione è lo spazio dei nomi impostato nel file build.gradle.

android:theme
Un riferimento a una risorsa di stile che definisce un tema generale dell'attività. In questo modo il contesto dell'attività viene impostato automaticamente per l'utilizzo di theme e potrebbe anche causare l'avvio di animazioni prima dell'avvio dell'attività, in modo da corrispondere meglio all'aspetto reale dell'attività.

Se questo attributo non viene impostato, l'attività eredita il tema impostato per l'applicazione nel suo insieme, dall'attributo theme dell'elemento <application>. Se non è impostato neanche questo attributo, viene utilizzato il tema di sistema predefinito. Per ulteriori informazioni, consulta la pagina Stili e temi.

android:uiOptions
Opzioni aggiuntive per l'UI di un'attività. Deve essere uno dei seguenti valori.

ValoreDescrizione
"none"Nessuna opzione UI aggiuntiva. Questa è l'impostazione predefinita.
"splitActionBarWhenNarrow"Aggiunge una barra nella parte inferiore dello schermo per visualizzare le attività nella barra dell'app, nota anche come barra delle azioni, quando è vincolato allo spazio orizzontale, ad esempio in modalità verticale su un telefono. Anziché visualizzare un numero ridotto di attività nella barra delle app nella parte superiore dello schermo, la barra delle app è suddivisa nella sezione di navigazione superiore e nella barra inferiore per le attività. Ciò significa che viene resa disponibile una quantità ragionevole di spazio non solo per le attività, ma anche per gli elementi di navigazione e titolo in alto. Le voci di menu non sono divise tra le due barre. Vengono sempre visualizzati insieme.

Per ulteriori informazioni sulla barra delle app, vedi Aggiungere la barra delle app.

Questo attributo è stato aggiunto nel livello API 14.

android:windowSoftInputMode
In che modo la finestra principale dell'attività interagisce con la finestra contenente la tastiera software sullo schermo. L'impostazione di questo attributo influisce su due aspetti:
  • Consente di indicare se la tastiera software è nascosta o visibile quando l'attività diventa l'oggetto principale dell'attenzione dell'utente.
  • Consente di indicare se la finestra principale dell'attività viene ridimensionata per fare spazio alla tastiera software o al riquadro dei contenuti, in modo da rendere visibile l'elemento attivo corrente quando parte della finestra è coperta dalla tastiera software.

L'impostazione deve essere uno dei valori elencati nella seguente tabella o una combinazione di un valore "state..." più un valore "adjust...". L'impostazione di più valori in entrambi i gruppi, ad esempio più valori "state...", ha risultati indefiniti. I singoli valori sono separati da una barra verticale (|), come mostrato nell'esempio seguente:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

I valori impostati qui (diversi da "stateUnspecified" e "adjustUnspecified") sostituiscono quelli impostati nel tema.

Valore Descrizione
"stateUnspecified" Non viene specificato se la tastiera software è nascosta o visibile. Il sistema sceglie uno stato appropriato o si basa sull'impostazione nel tema.

Questa è l'impostazione predefinita per il comportamento della tastiera software.

"stateUnchanged" La tastiera software viene mantenuta nell'ultimo stato in cui si trovava, visibile o nascosta, quando l'attività viene messa in primo piano.
"stateHidden" La tastiera software è nascosta quando l'utente sceglie l'attività, ovvero quando l'utente passa affermativamente all'attività, invece di tornare all'attività quando abbandona un'altra attività.
"stateAlwaysHidden" La tastiera software è sempre nascosta quando nella finestra principale dell'attività è attivo lo stato attivo per l'inserimento.
"stateVisible" La tastiera software viene resa visibile quando l'utente sceglie l'attività, ovvero quando passa in modo affermativo all'attività, invece di rientrarvi quando abbandona un'altra attività.
"stateAlwaysVisible" La tastiera software è visibile quando la finestra riceve lo stato attivo per l'immissione.
"adjustUnspecified" Non viene specificato se la finestra principale dell'attività viene ridimensionata per lasciare spazio alla tastiera software o per i contenuti della panoramica della finestra per rendere visibile sullo schermo l'elemento attivo corrente. Il sistema seleziona automaticamente una di queste modalità a seconda che i contenuti della finestra abbiano o meno visualizzazioni del layout che possono far scorrere i contenuti. In presenza di una visualizzazione di questo tipo, la finestra viene ridimensionata, supponendo che lo scorrimento possa rendere visibili tutti i contenuti della finestra in un'area più piccola.

Questa è l'impostazione predefinita per il comportamento della finestra principale.

"adjustResize" La finestra principale dell'attività viene sempre ridimensionata per fare spazio alla tastiera software sullo schermo.
"adjustPan" La finestra principale dell'attività non viene ridimensionata per fare spazio alla tastiera software. La panoramica viene invece eseguita automaticamente sui contenuti della finestra, in modo che l'elemento attivo corrente non venga mai oscurato dalla tastiera e gli utenti possano sempre vedere ciò che stanno digitando. Questa opzione è generalmente meno desiderabile del ridimensionamento, perché l'utente potrebbe dover chiudere la tastiera morbida per accedere e interagire con le parti oscurate della finestra.

Questo attributo è stato introdotto nel livello API 3.

introdotto in:
Livello API 1 per tutti gli attributi ad eccezione di noHistory e windowSoftInputMode, che sono stati aggiunti al livello API 3.
Vedi anche:
<application>
<activity-alias>