2011-11-18 13 views
14

Ho lavorato a un progetto Android, che è destinato a essere compatibile con entrambi i telefoni e tablet Android. Sul tablet l'app funziona benissimo e ha un bell'aspetto. Tuttavia, al telefono abbiamo riscontrato problemi sia a livello di codice che di layout (lavorare con uno schermo da 10.1 pollici è molto più semplice di uno schermo da 4 pollici). Per risolvere alcuni di questi problemi, abbiamo deciso di disattivare l'orientamento dello schermo ma solo per la versione del telefono, almeno temporaneamente.Come blocco l'orientamento dello schermo per il telefono, ma non per il tablet? (Android)

La domanda è semplice, come posso disattivare l'orientamento dello schermo per il telefono Android, mantenendolo attivo per i tablet Android? So che posso farlo nel file manifest, tuttavia, questo bloccherà anche l'orientamento del tablet.

risposta

11

È possibile farlo anche dall'applicazione.

Lock screen orientation (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

e gli attributi possono essere trovate qui:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


Per rilevare, se il dispositivo Android è tablet o un telefono, è necessario utilizzare questa soluzione (diverso SO Q & A), https://stackoverflow.com/a/9308284/492624

+1

Perché questa risposta impostato come valida? Non spiega come impostare un comportamento diverso su telefono e tablet. –

2

Sembra, non impossibile se lo si gestisce in fase di esecuzione, ottenendo dimensioni dello schermo e quindi rendere RunTimeConfigurationChanges, quindi potrebbe essere di aiuto.

Prova questo Handling Runtime Changes.

e fatemi sapere se si ottiene successo su di esso ..

Grazie.

+0

Sono d'accordo con te ma potrebbe essere fatto. Per fare ciò: 1. Ottenere la risoluzione dello schermo del dispositivo. 2. Sovrascrivere il metodo onConfigurationChanged nell'attività. –

1

Un metodo è, creare attività separate per versione del telefono e versione tablet. E quindi correggere i loro orientamenti nel file manifest Android. Un altro metodo è quello di controllare il dispositivo che viene attualmente utilizzato e fissare l'orientamento della stessa attività utilizzando il codice,

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Creazione di attività separate è il modo migliore come è facile da mantenere le versioni scheda telefonici.

10

Prima di tutto, provare a evitare questo. Ho scelto di farlo perché era una soluzione semplice per un problema complesso. Ma davvero, cerca di evitare di avere questo.

Se si desidera veramente farlo, utilizzare il seguente codice.

Nella tua attività di creare un metodo:

private boolean isTablet() { 
     return (this.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
    } 

E poi nel vostro onCreate effettuare le seguenti operazioni:

if (!isTablet()) { 
     // stop screen rotation on phones because <explain> 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 
Problemi correlati