Ho un'attività. Questa attività funziona in modalità verticale o orizzontale. In modalità orizzontale, carico un nuovo layout per mostrare un grafico. Per rilevare l'orientamento, ho creato questo nel mio manifesto:Disabilita l'orientamento ma rileva l'orientamento
android:screenOrientation="sensor" android:configChanges="orientation"
Funziona perfettamente, perché quando ho capovolgere il mio telefono, il nuovo layout è stato caricato. Ma, in modalità paesaggio, l'utente può disabilitare/abilitare la rotazione con un pulsante (è uno switcher).
ho scritto questo codice:
public void onConfigurationChanged(Configuration pNewConfig) {
Log.v(DEBUG_TAG, "Current configuration changes");
if (pNewConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.v(DEBUG_TAG, "Screen orientation : LANDSCAPE");
if (pNewConfig.orientation != mCurrentOrientation) {
initTestLandscape();
mCurrentOrientation = pNewConfig.orientation;
}
} else {
Log.v(DEBUG_TAG, "Screen orientation : PORTRAIT");
if (!mIsLandscapeLocking
&& pNewConfig.orientation != mCurrentOrientation) {
initTestPortrait();
mCurrentOrientation = pNewConfig.orientation;
}
}
super.onConfigurationChanged(pNewConfig);
}
questo codice funziona, ma quando l'utente è in modalità orizzontale e lancia il telefono per eseguire in modalità verticale e il blocco è attivo, il layout paesaggio lanci in modalità verticale e io non voglio quello!
Ho aggiunto
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ma questo codice disabilita il metodo onConfigurationChanged e non riesco a rilevare se l'utente lancia di nuovo il telefono ...
mi potete aiutare?
E 'molto semplice ... chiamo il setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); quando l'utente blocca la vista e chiama setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_SENSOR); quando l'utente sblocca ... è così facile, come faccio a non pensare a questa soluzione? Ci scusiamo per eventuali inconvenienti. (Non posso rispondere alla mia domanda) – FinalSpirit
Vale la pena notare che la soluzione che hai fornito per te stesso si comporterà ancora stranamente se l'utente si blocca mentre la vista viene ruotata a destra anziché a sinistra. La vista si capovolgerà perché stai bloccando su "SCREEN_ORIENTATION_LANDSCAPE" che significa solo da una parte. Probabilmente vuoi "SCREEN_ORIENTATION_SENSOR_LANDSCAPE' che lo tenga in orizzontale ma ascolti il sensore dal dispositivo se l'utente passa al lato opposto del telefono/tablet. – SDJMcHattie
Sì, devi utilizzare SCREEN_ORIENTATION_SENSOR_LANDSCAPE al posto di SCREEN_ORIENTATION_LANDSCAPE ma quando pubblico questo argomento, ero su Android 8 che non supporta SCREEN_ORIENTATION_SENSOR_LANDSCAPE – FinalSpirit