Android Studio 3.6.
Je souhaite que mon application soit toujours en mode portrait
. Donc dans mon AndroidMainfest.xml
:
<activity
Android:name=".activity.SplashActivity"
Android:screenOrientation="portrait">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
J'exécute l'application et SplashActivity
s'affiche en mode portrait
. Agréable. Mais l'éditeur affiche l'erreur suivante:
Expecting Android:screenOrientation="unspecified"
Pourquoi?
Dans votre balise manifeste (juste en dessous de xmlns:Android="http://schemas.Android.com/apk/res/Android"
), mettez
xmlns:tools="http://schemas.Android.com/tools"
Puis à l'intérieur de la balise d'application, mettez
tools:ignore="LockedOrientationActivity
cela n'affecte que Android Studio 3.6+
Quel est le problème ici? Ce problème se produit car Android framework veut que l'utilisateur contrôle lui-même l'orientation de l'application, il n'est pas conseillé de restreindre l'orientation de votre application, par exemple si un utilisateur souhaite utiliser l'application en orientation paysage, il retourne simplement l'appareil et les capteurs feront le travail, mais lorsqu'un développeur restreint l'orientation de l'écran, même lorsque l'application de capteur de rotation fonctionne, elle restera dans un état prédéfini, d'une manière que vous restreignez les capacités de l'appareil de l'utilisateur.
Que faire maintenant? Vous avez deux options., La première consiste à ignorer l'erreur car elle ne causera aucun échec de construction, même si je fais la même chose et la génération apk/aab est comme d'habitude Une autre option consiste à fournir des dispositions de paysage ou à gérer la rotation comme dans certains les applications qui reconnaissent si l'orientation est modifiée, elles inviteront l'utilisateur à changer l'orientation car l'application n'est pas prise en charge dans une telle orientation
Cela peut changer à l'avenir => à l'heure actuelle, cela n'affecte pas notre processus de construction, mais cela pourrait changer à l'avenir
Dans Android studio 3.6.0, je suppose qu'ils veulent que l'utilisateur gère l'orientation et encourage le développeur à utiliser ViewModel des trucs. Permettez-moi d'expliquer screenOrientation en détail
Android:screenOrientation="portrait"
vous donnera une erreur, vous devez soit spécifier
Android:screenOrientation="fullSensor" or Android:screenOrientation="unspecified"
fullSensor Signifie que vous avez activé le "Rotation désactivée" ou non, cela changera l'orientation en fonction du déplacement du téléphone
non spécifié signifie que si vous avez activé la fonction Rotation désactivée, elle restera uniquement dans cette orientation et sinon, elle changera l'orientation en fonction du déplacement du téléphone.
J'ai utilisé la procédure ci-dessous. Cela fonctionne parfaitement pour moi. Dans Android studio 3.6.0, je pense qu'ils veulent que l'utilisateur gère l'orientation et encourage le développeur à utiliser les choses de ViewModel. Utilisez la procédure ci-dessous pour ignorer cela.
Ajoutez d'abord:
xmlns:Android="http://schemas.Android.com/apk/res/Android"
dans la balise manifest.
Deuxièmement, ajouter
tools:ignore="LockedOrientationActivity"
dans la balise d'application. Codage heureux.
J'ai trouvé 2 façons de résoudre ce problème
Première,
Android Studio -> Preferences (or settings in Windows)
-> search "chrome"
-> Uncheck "Activity is locked to an orientation"
-> apply and ok
-> Sync Project with Gradle flie
Deuxièmement, `
Select "Run" from the main menu
-> Edit Configurations.
-> Launch options - Launch
-> select Nothing or Specified Activity
-> Sync Project with Gradle file
Ajouter la ligne suivante après Android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"
Puis clique Alt+Enter
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
J'ai fait face à ce problème, dans mon exigence, une partie de l'activité soutiendra les deux orientations et les restes resteront en portrait, dans ce cas, j'ai résolu par les étapes suivantes:
Cas-1: - Pour verrouiller l'orientation
Étape 1: Veuillez ajouter la ligne suivante Balise d'application dans AndroidManifest.xml
tools: ignore = "LockedOrientationActivity"
<application
Android:name=".activity.MyApplication"
tools:ignore="LockedOrientationActivity">
Étape 2: Si vous souhaitez verrouiller l'orientation de l'écran en mode portrait ou paysage, ajoutez la ligne suivante dans la balise d'activité
Android: screenOrientation = "portrait" ou "paysage"
Cas-2: - Supposons que si vous voulez permettre l'orientation dans une activité particulière et avoir une conception spécifique pour le paysage
Étape 1: Supprimer la valeur d'orientation dans les changements de configuration et supprimer l'orientation de l'écran si elle existe dans la balise d'activité, et ma suggestion personnelle utilise (LifecycleObserver) dans Activité pour sans perdre de valeurs lors du changement d'orientation.
Android: configChanges = "orientation"
Android: screenOrientation = "portrait" ou "paysage"
C'est la façon dont je résous ce problème, j'espère que cela aide, merci et bon codage.
Essayez de mettre ce qui suit dans la balise d'activité
Android:configChanges="orientation"
Android:screenOrientation="portrait"
Essayez cette solution:
AndroidMainfest:
<activity
Android:name="com.ui.activity.SplashActivity"
Android:screenOrientation="portrait"
Android:windowSoftInputMode="adjustPan">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
J'espère que cela t'aides!