Anche se consigliamo vivamente di progettare la tua app in modo che si adatti a tutte le dimensioni e le densità degli schermi, potresti comunque non voler supportare l'app in base a determinate configurazioni dello schermo. In tal caso, puoi limitare il numero di dimensioni dell'app su cui Android può ridimensionare o persino i dispositivi che possono installarla, come descritto in questa pagina.
Prima di limitare l'app a determinate schermate, è consigliabile comprendere tutte le tecniche per supportare più schermi e implementarli nel miglior modo possibile.
Pubblica elementi separati per schermate diverse
Nel caso in cui non sia irragionevole creare una singola app che supporti tutte le configurazioni dello schermo, Google Play ti consente di pubblicare più versioni per la stessa scheda dell'app. Puoi utilizzare questa funzionalità per fornire elementi separati che supportano un insieme diverso di configurazioni dello schermo (come dichiarato nel file manifest) senza creare schede separate nel Google Play Store.
Ad esempio, se desideri pubblicare sia una versione per smartphone sia una versione per tablet della tua app, ma non riesci a far funzionare un solo APK per entrambe le dimensioni dello schermo, puoi pubblicare due APK per la stessa scheda dell'app. A seconda della configurazione dello schermo del dispositivo, Google Play scaricherà l'APK corrispondente alle dimensioni dello schermo di ogni dispositivo. Tieni presente che, durante la pubblicazione con Android App Bundle, gli APK pubblicati vengono ottimizzati automaticamente in base alla densità dello schermo. Devi usare lo stesso metodo, ma nel caso del targeting per dimensione dello schermo devi utilizzare lo stesso metodo.
Per ulteriori informazioni, consulta la sezione Creazione di più APK per schermi di dimensioni diverse.
Dichiara le proporzioni massime
Per supportare il maggior numero possibile di dispositivi, un'app deve adattare dinamicamente il suo layout per garantire che i contenuti e i controlli siano visibili e ben organizzati.
La maggior parte delle app dovrebbe anche essere ridimensionabile in modo che l'utente possa eseguirle in modalità multi-finestra. L'utente può avviare un'attività ridimensionabile in modalità schermo diviso e in formato libero e modificarne le dimensioni trascinandone i lati o gli angoli.
La modalità multi-finestra è disponibile per tutte le app eseguite in Android 7.0 (livello API 24) o versioni successive e le app sono ridimensionabili per impostazione predefinita. Puoi anche impostare esplicitamente l'attributo android:resizeableActivity=true
per un'intera app o attività specifiche.
Per impostazione predefinita, Android 12 (livello API 31) è in modalità multi-finestra. Su schermi di grandi dimensioni (sw >= 600 dp), tutte le app vengono eseguite in modalità multi-finestra, indipendentemente dalla loro configurazione. Se resizeableActivity="false"
, l'app viene impostata in
modalità di compatibilità quando necessario per conformarsi alle dimensioni del display. Su schermi di piccole dimensioni (sw < 600 dp), il sistema controlla le impostazioni di minWidth
, minHeight
e resizeableActivity
di un'attività per determinare se l'attività può essere eseguita in modalità multi-finestra. Se resizeableActivity="false"
, l'attività non supporta la modalità multi-finestra indipendentemente dalla larghezza e dall'altezza minime dell'attività.
A livelli API 30 e precedenti, se non vuoi che la tua app o attività venga eseguita in modalità multi-finestra, imposta resizeableActivity=false
. In questo caso, l'app viene sempre
visualizzata a schermo intero. Il sistema controlla come farlo, a seconda del livello di sistema operativo Android:
- Se la tua app ha come target Android 8.0 (livello API 26) e Android 11 (livello API 30), l'app riempirà l'intero schermo in base al suo layout.
- Se la tua app ha come target Android 7.1 (livello API 25) o versioni precedenti, il sistema limita le dimensioni dell'interfaccia dell'app a una finestra con proporzioni pari a 16:9 (circa 1,86). Se l'app viene eseguita su un dispositivo con proporzioni più grandi, viene visualizzata in una letterbox 16:9 che lascia inutilizzata parte dello schermo.
Se il layout della tua app non può adattarsi a proporzioni arbitrarie, puoi applicare esplicitamente il letterbox a tutti i livelli del sistema operativo Android impostando un rapporto di aspetto massimo. Consigliamo un rapporto di 2,4 (12:5). L'app verrà mostrata come letterbox quando è in esecuzione su un dispositivo con proporzioni maggiori di quelle specificate. Il valore che scegli deve essere almeno 1,0 per i dispositivi Wear OS e almeno 1,33 per gli altri dispositivi. Se specifichi proporzioni inferiori a questi limiti, il sistema limita le proporzioni della tua app a seconda del livello di sistema operativo come descritto in precedenza.
Per impostare le proporzioni massime per Android 8.0 (livello API 26) e versioni successive, dichiara le proporzioni massime utilizzando
android:maxAspectRatio
nel tag <activity>
.
Nell'esempio seguente viene mostrato come dichiarare proporzioni massime di 2,4:
<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<activity android:maxAspectRatio="2.4">
...
</activity>
Per Android 7.1 e versioni precedenti, aggiungi un elemento
<meta-data>
denominato android.max_aspect
all'elemento
<application>
come segue:
<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<meta-data android:name="android.max_aspect" android:value="2.4" />
Se imposti le proporzioni massime, non dimenticare di impostare anche
android:resizeableActivity false
. Altrimenti, le proporzioni massime
non hanno alcun effetto.
Dichiara le dimensioni massime dello schermo
Anche se non ottimizzi completamente la tua app per supportare schermi di dimensioni diverse, Android può comunque estendere la maggior parte delle app per adattarle a schermi più grandi. Quindi non è quasi mai necessario dichiarare una dimensione massima dello schermo.
Inoltre, se decidi di creare più APK per schermi di dimensioni diverse, non c'è bisogno di limitare un APK solo agli schermi di piccole dimensioni, perché l'APK ottimizzato per schermi di grandi dimensioni dovrebbe avere il versionCode
più grande, quindi Google Play fornisce sempre quell'APK ai dispositivi con uno schermo di grandi dimensioni.
Tuttavia, se non sei ancora soddisfatto del modo in cui Android ridimensiona l'app per gli schermi di grandi dimensioni, puoi disattivare il ridimensionamento oltre una certa larghezza specificando l'attributo largestWidthLimitDp
nel tag manifest <supports-screens>
.
Quindi, invece di ridimensionare il layout, Android attiva la modalità
di compatibilità dello schermo, che
disegna il layout come farebbe sulla dimensione più grande supportata dall'app, quindi
incrementa tutti i pixel per riempire lo schermo.
Limitare l'app solo per tablet o TV
Puoi impedire ai dispositivi smartphone di scaricare la tua app utilizzando l'elemento manifest <supports-screens>
.
Ad esempio, quanto segue dichiara che l'app deve essere installata solo su schermi di grandi dimensioni e xlarge:
<manifest ... >
<supports-screens android:smallScreens="false"
android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"/>
...
</manifest>
Limitare l'app solo per dimensioni e densità specifiche
Puoi definire le dimensioni e le densità esatte dello schermo supportate dalla tua app utilizzando l'elemento manifest <compatible-screens>
. Tuttavia, ti consigliamo vivamente di evitare di utilizzarla, in quanto qualsiasi combinazione di dimensioni e densità non specificate viene considerata una configurazione dello schermo con cui la tua app non è compatibile. Di conseguenza, l'utilizzo di questo elemento ti consente di bloccare facilmente molti dispositivi che la tua app è effettivamente in grado di supportare.
L'elemento <compatible-screens>
deve contenere uno o più
elementi <screen>
. Ogni elemento <screen>
specifica una configurazione dello schermo con cui la tua app è compatibile, utilizzando entrambi gli attributi android:screenSize
e android:screenDensity
. Ogni elemento <screen>
deve includere entrambi gli attributi per specificare una singola configurazione della schermata; se uno dei due attributi non è presente, significa che non è valido (servizi esterni come Google Play lo ignorerà).
Ecco l'aspetto della voce manifest se la tua applicazione è compatibile solo con schermi di dimensioni ridotte e normali (e con un sottoinsieme di densità dello schermo):
<manifest ... >
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
</compatible-screens>
...
<application ... >
...
<application>
</manifest>
L'installazione dell'app verrà limitata a qualsiasi combinazione di dimensione e densità non dichiarata esplicitamente qui.