Orientation, format et redimensionnement de l'application

Les applications Android fonctionnent sur toutes sortes d'appareils : téléphones, tablettes, appareils pliables, appareils ChromeOS, voitures, téléviseurs et même appareils de réalité étendue. Pour s'adapter à cet environnement varié, votre application doit être compatible avec tous les facteurs de forme d'appareil et toutes les tailles d'écran.

Android 16 (niveau d'API 36) permet aux applications de s'adapter à différents facteurs de forme et tailles d'écran en remplaçant les restrictions d'application pour l'orientation de l'écran, le format et la redimensionnabilité. Les remplacements s'appliquent aux appareils dont la plus petite largeur est supérieure ou égale à 600 dp, ce qui définit les éléments suivants :

  • Tablettes
  • Écrans internes des appareils pliables à grand écran
  • Fenêtrage du bureau (sur tous les facteurs de forme)

Les applications ciblant le niveau d'API 36 sont redimensionnables et peuvent passer en mode multifenêtre (équivalent à resizeableActivity="true") si la plus petite largeur de l'écran est supérieure ou égale à 600 dp.

L'application est mise en boîte aux lettres sur un appareil à grand écran déplié avant Android 16, mais elle est en plein écran lorsqu'elle cible Android 16. L'application affiche plus d'articles d'actualités en plein écran qu'en mode letterbox.
Figure 1 : Le flux d'actualités pour les développeurs, qui était auparavant letterboxé sur les appareils à grand écran (à gauche), s'affiche en plein écran lorsqu'il cible Android 16 (à droite).

Android 16 applique un modèle cohérent de conception d'applications adaptatives qui optimise l'expérience utilisateur en respectant les préférences de l'utilisateur concernant l'orientation de l'appareil, le format et la taille de l'écran.

Modifications

Les attributs de fichier manifeste et les API suivants sont ignorés pour les applications ciblant Android 16 (niveau d'API 36) sur les grands écrans :

Attribut ou API Valeurs ignorées
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity tous
minAspectRatio tous
maxAspectRatio tous
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

Exceptions

Voici quelques exceptions aux modifications apportées à Android 16 :

  • Écrans de taille inférieure à sw600dp (la plupart des téléphones, des pliables et des écrans extérieurs des pliables grand écran)

  • Jeux basés sur l'indicateur android:appCategory

    Publiez votre jeu à l'aide d'Android App Bundles et de la signature d'application Play pour permettre à Google Play de gérer le flag et de fournir automatiquement les avantages des app bundles. Consultez également la présentation du fichier manifeste d'application.

  • L'utilisateur accepte le comportement par défaut de l'application dans les paramètres du format

Désactiver

Pour désactiver le comportement du niveau d'API 36, déclarez la propriété de fichier manifeste PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.

Pour désactiver une activité spécifique, définissez la propriété dans l'élément <activity>:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

Pour désactiver cette fonctionnalité pour l'ensemble de votre application, définissez la propriété dans l'élément <application>:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Tests

Pour tester si votre application est concernée par les modifications d'Android 16, utilisez les émulateurs de la gamme Pixel Tablet et Pixel Fold dans Android Studio, et définissez targetSdkPreview = "Baklava" dans le fichier build.gradle du module de votre application.

Vous pouvez également utiliser le framework de compatibilité des applications sur vos appareils de test en activant l'indicateur UNIVERSAL_RESIZABLE_BY_DEFAULT (voir Outils du framework de compatibilité).

Vous pouvez automatiser les tests avec le framework de test Espresso et les API de test Jetpack Compose.

Problèmes courants

Les applications qui limitent l'orientation de l'appareil, le format ou la redimensionnabilité de l'application peuvent présenter des problèmes d'affichage sur Android 16, tels que des mises en page qui se chevauchent.

Pour offrir une expérience utilisateur optimale sur les téléphones, les appareils pliables, les tablettes, les appareils ChromeOS, les écrans de voiture et la XR, concevez votre application pour qu'elle soit responsive et adaptative :

  • Évitez les composants d'UI étirés : les mises en page conçues pour les écrans de téléphone standard en mode Portrait ne s'adapteront probablement pas aux autres formats. Par exemple, les éléments d'interface utilisateur qui occupent toute la largeur de l'écran apparaîtront étirés en mode Paysage. Ajoutez une largeur maximale aux composants pour éviter qu'ils ne s'étirent.

  • Activer le défilement des mises en page : si les mises en page ne défilent pas, les utilisateurs risquent de ne pas pouvoir accéder aux boutons ni aux autres éléments d'interface utilisateur qui se trouvent hors écran en mode paysage. Activez le défilement des mises en page d'application pour vous assurer que tout le contenu est accessible, quelle que soit la hauteur de l'écran.

  • Assurez-vous de la compatibilité de l'appareil photo en mode Portrait et Paysage : les aperçus du viseur de l'appareil photo qui supposent un format et une orientation spécifiques par rapport au capteur de l'appareil photo peuvent entraîner des aperçus étirés ou inversés sur les écrans non conformes. Assurez-vous que les viseurs pivotent correctement lorsque l'orientation change. Activez les viseurs pour qu'ils s'adaptent aux formats de l'UI qui diffèrent de celui du capteur.

  • Conserver l'état lors des changements de taille de fenêtre : la suppression des restrictions d'orientation et de format peut entraîner de fréquents changements de taille de fenêtre d'application en fonction de la façon dont les utilisateurs préfèrent utiliser une application, par exemple en faisant pivoter, en pliant ou en dépliant un appareil, ou en redimensionnant une application en mode multifenêtre ou en mode fenêtrage du bureau. Les changements de configuration, tels que les changements d'orientation et le redimensionnement de la fenêtre, entraînent la recréation de l'activité (par défaut). Pour garantir une expérience utilisateur optimale, conservez l'état de l'application lors des modifications de configuration afin que votre application conserve les données (telles que les saisies de formulaire) et que les utilisateurs puissent conserver le contexte.

  • Utilisez des classes de taille de fenêtre : prenez en charge différentes tailles de fenêtre et différents formats sans personnalisations spécifiques à l'appareil. Supposez que la taille des fenêtres changera fréquemment. Utilisez les classes de taille de fenêtre pour caractériser les dimensions de la fenêtre, puis appliquez une mise en page adaptative appropriée.

  • Créez des mises en page responsives : dans les classes de taille de fenêtre, les mises en page responsives s'adaptent aux changements de dimensions de l'écran pour toujours créer une présentation optimale de l'application.

Vos trajets

  • Android 16 (2025) : la prise en charge de toutes les orientations et de tous les formats, ainsi que du redimensionnement des applications, constitue l'expérience de base pour les appareils à grand écran (plus petite largeur d'écran >= 600 dp) pour les applications ciblant le niveau d'API 36. Toutefois, les développeurs peuvent désactiver cette fonctionnalité.

  • Version d'Android en 2026 : la prise en charge de toutes les orientations et de tous les formats, ainsi que de la redimensionnabilité des applications, sera l'expérience de base pour les appareils à grand écran (plus petite largeur d'écran >= 600 dp) pour les applications ciblant le niveau d'API 37. Les développeurs ne pourront pas désactiver cette fonctionnalité.

Niveau d'API cible Appareils concernés Désactivation par le développeur autorisée
36 (Android 16) Appareils à grand écran (largeur d'écran minimale >= 600 dp) Oui
37 (prévue) Appareils à grand écran (largeur d'écran minimale >= 600 dp) Non

Les délais pour cibler des niveaux d'API spécifiques dépendent de l'app store. Google Play exigera que les applications ciblent le niveau d'API 36 à partir d'août 2026 et le niveau d'API 37 à partir d'août 2027.

Ressources supplémentaires