risposta-alla-domanda-sullo-sviluppo-web-bd.com

Blocco schermo orientamento (Android)

Possibile duplicato:
Come disabilitare il cambio di orientamento in Android?

Sto scrivendo un'applicazione Android che utilizza schede con contenuti diversi (attività). In una di queste attività, vorrei bloccare l'orientamento dello schermo in modalità "Paesaggio", ma nelle altre attività, desidero l'orientamento normale (in base al sensore).

Quello che sto facendo ora è che sto chiamando

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

quando passo all'attività in modalità orizzontale, e

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

quando torno alle altre attività. Tuttavia, questo non sembra funzionare, l'intera applicazione si blocca. Qual è l'approccio normale a questo problema?

141
user573536

Nel Manifest, puoi impostare screenOrientation in orizzontale. Sembrerebbe qualcosa di simile nell'XML:

<activity Android:name="MyActivity"
Android:screenOrientation="landscape"
Android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>

Dove MyActivity è quello che si desidera mantenere in orizzontale.

La riga Android:configChanges=... impedisce che onResume(), onPause() vengano richiamati quando lo schermo viene ruotato. Senza questa linea, la rotazione rimarrà come richiesto ma le chiamate verranno comunque effettuate.

Nota: keyboardHidden e orientation sono richiesti per <Android 3.2 (livello API 13) e tutte e tre le opzioni sono richieste 3.2 o successive, non solo orientation.

238
Kevin Dion

Ho avuto un problema simile.

Quando sono entrato

<activity Android:name="MyActivity" Android:screenOrientation="landscape"></activity>

Nel file manifest questo ha causato l'attività di visualizzazione in orizzontale. Tuttavia, quando sono tornato alle attività precedenti, sono stati visualizzati in panoramiche anche se erano impostati su Ritratto. Tuttavia aggiungendo

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

immediatamente dopo che la sezione OnCreate dell'attività di destinazione ha risolto il problema. Quindi ora uso entrambi i metodi.

57
Alan Cartwright

all'interno del file manifest di Android del tuo progetto, trova la dichiarazione di attività di chi vuoi correggere l'orientamento e aggiungi il seguente pezzo di codice,

Android:screenOrientation="landscape"

per l'orientamento orizzontale e per il ritratto aggiungi il seguente codice,

Android:screenOrientation="portrait"
30
HjK