Domanda

Voglio rendere possibile l'utilizzo di un'attività in orizzontale / verticale. L'attività inizia con il layout per l'orientamento corrente (ovvero prima di iniziare l'attività). Dopodiché deve attenersi ad esso e non reagire al cambio di orientamento.

Ho provato a inserire

android:configChanges="orientation" 

nel manifesto dell'attività e prevalente

@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
}

per non fare nulla (ho provato a commentare anche la super chiamata, ma questo ha portato a un'eccezione) ma questo non ha l'effetto di disabilitare la modifica della rotazione: la modifica viene elaborata e il layout ricostruito, semplicemente non utilizza quello corretto.

E non posso usare

android:screenOrientation

Perché sembra che devo specificare solo una modalità per sempre, e non è nemmeno quello di cui ho bisogno. E comunque, se specifico qualcosa lì, l'attività viene ricostruita durante la rotazione. Provato con

android:screenOrientation="nosensor"

che non fa nulla

Qui c'è un blocco dell'orientamento corrente con codice http://www.samcoles.co.uk/ mobile / Android-lock-and-unlock-screen-Orientamento /

Ma ottiene lo stesso effetto della specifica dell'orientamento in XML (mantiene il layout ma ricostruisce l'attività). È un po 'più vicino a quello che voglio (mantiene l'orientamento dall'inizio), ma ricostruisce l'attività e non voglio che reagisca affatto.

È stato utile?

Soluzione

android: configChanges="orientamento" non funziona affatto sull'emulatore, ma funziona bene sui dispositivi.

Altri suggerimenti

Prova

@Override
public void onConfigurationChanged(Configuration newConfig) {
    newConfig.orientation = getResources().getConfiguration().orientation;
    super.onConfigurationChanged(newConfig);
}
.

Aggiungilo a onCreate

if (this.getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
        else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top