Ho un'app che mostra bitmap a schermo intero in un'attività. Per fornire tempi di caricamento rapidi, li carico nella memoria. Ma quando lo schermo cambia orientamento, vorrei cancellare la cache per riempirla nuovamente con bitmap che si adattano alle nuove dimensioni. L'unico problema è che per fare ciò, devo rilevare quando si verifica un cambiamento di orientamento. Qualcuno sa come rilevare questo?Come rilevare quando il dispositivo passa dalla modalità verticale a quella orizzontale?
risposta
rimanda alla documentazione ufficiale http://developer.android.com/guide/topics/resources/runtime-changes.html
La modifica sarà effettivamente creare una nuova vista e onCreate sarà chiamato di nuovo.
Inoltre è possibile controllare via
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
Grazie mille per l'ottima risposta! –
@noone: si noti che questo metodo verrà chiamato SOLO se sono state selezionate le configurazioni che si desidera gestire con l'attributo 01.android.R.attr # configChanges nel manifest. Vedi javadoc! – user504342
Grazie amico, questo funziona anche per me. – Suniel
In genere, il cambio di orientamento chiama OnCreate()
a meno che non si sia fatto qualcosa per farlo diversamente.
È possibile inserire la logica lì.
Ovviamente ha senso, ma come fare in modo di non ricaricare la cache ogni volta che viene chiamato onCreate? onCreate potrebbe essere chiamato semplicemente dopo che l'attività è stata ricreata dopo una telefonata con l'esempio e la cache non dovrebbe essere ricaricata in questa situazione. –
@Poplitou vedi la risposta di siik su 'onSavedInstanceState' e anche http://stackoverflow.com/questions/4096169/onsaveinstancestate-and-onrestoreinstancestate – sealz
Grazie mille per il collegamento –
'possibile verificare l'onSavedInstanceState
dal tuo metodo onCreate
, se non è mezzo null questo è il cambiamento di configurazione.
Ok, vedo come farlo, grazie per l'ottima risposta! –
Un altro approccio utilizza OrientationEventListener.
Può essere utilizzato in questo modo:
OrientationEventListener mOrientationEventListener = new OrientationEventListener(
this, SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
//checking if device was rotated
if (orientationPortrait != isPortrait(orientation)) {
orientationPortrait = !orientationPortrait;
Log.d(TAG, "Device was rotated!");
}
}
};
Per controllare l'orientamento:
private boolean isPortrait(int orientation) {
return (orientation >= (360 - 90) && orientation <= 360) || (orientation >= 0 && orientation <= 90);
}
E non dimenticate di attivare e disattivare ascoltatore:
if (mOrientationEventListener != null) {
mOrientationEventListener.enable();
}
if (mOrientationEventListener != null) {
mOrientationEventListener.disable();
}
Penso che il cambio di configurazione sia una cosa, in questo caso onConfigurationChanged è la strada da percorrere. Ma se hai bloccato le modifiche all'orientamento e vuoi comunque essere informato, i listener di orientamento sono l'approccio migliore. Grazie a Bogdan. – Murciegalo84
- 1. Come posso rilevare quando l'iPhone passa in modalità orizzontale tramite JavaScript? C'è un evento per questo?
- 2. Ottieni UINavigationBar altezza orizzontale mentre il dispositivo è in verticale
- 3. Eseguire l'applicazione solo in modalità orizzontale?
- 4. Come impostare la modalità verticale con libGDX?
- 5. App anima da verticale a orizzontale
- 6. UIDeviceOrientationFaceUp - come distinguere tra verticale e orizzontale?
- 7. si sposta verso sinistra quando si ruota l'iPad da orizzontale a verticale
- 8. Problema pushViewController da orizzontale a verticale
- 9. Come controllare il cambio di orientamento del dispositivo Da verticale a orizzontale e Vice-Versa in iPad
- 10. Mostra tastiera virtuale quando il dispositivo è in modalità paesaggio
- 11. Android: come rilevare l'orientamento dell'immagine (verticale o orizzontale) selezionato dalla galleria mentre si imposta su una visualizzazione di immagini?
- 12. Come mostrare l'immagine con l'orientamento corretto, Orizzontale o verticale
- 13. Come bloccare l'orientamento dell'app Android in modalità verticale?
- 14. Come rilevare la modalità STAMINA?
- 15. Come rilevare quando il dispositivo è orientato capovolto in libGDX
- 16. costringendo il sito Web a mostrare solo in modalità orizzontale
- 17. Android: layout xml alternativo per modalità orizzontale
- 18. ios6 Problema di rotazione da orizzontale a verticale
- 19. Quando il dispositivo Android entra in modalità di sospensione?
- 20. Database orizzontale e database verticale
- 21. Come rendere visibile il popover di UIsplitview in modalità verticale iPad
- 22. Come sapere se la foto è in modalità orizzontale o verticale?
- 23. Lavorare con AutoLayout in verticale e orizzontale
- 24. Come rilevare lo scorrimento orizzontale in jQuery?
- 25. iPhone SDK: Modalità Cattura immagine orizzontale
- 26. Intervallo fastidioso quando AVQueuePlayer passa dalla risorsa a un'altra
- 27. AutoCompleteTextView suggerimenti in modalità orizzontale
- 28. SKStoreproductviewcontroller troncato in modalità orizzontale
- 29. Android: il passaggio tra la modalità orizzontale e verticale rende Inten. Valori persi
- 30. Testo di TextView che scompare quando il dispositivo è ruotato
possibile duplicato di [ Come rilevare i cambiamenti di orientamento nel layout in Android?] (Http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in -android) – Sam