Per questo, penso che sarà necessario rimboccarsi due cose in una.
- primo luogo, avere dimensioni dello schermo del dispositivo
- E poi, sulla base di risultati, abilitare o disabilitare l'orientamento.
Per la prima parte:
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
Toast.makeText(this, "Normal screen",Toast.LENGTH_LONG).show();
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
}
credito: https://stackoverflow.com/a/11252278/450534 (soluzione è stata prontamente disponibili su SO)
E, infine, in base al risultato del codice di cui sopra, sia di questi:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
O
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
fonte
2013-02-24 14:21:27
+1 per "La soluzione era prontamente disponibile su SO" – Pragnani
@Pragnani: credito dovuto dove è dovuto eh. Non posso rivendicare ciò che non è mio ;-) –
Apprezzo che la soluzione fosse prontamente disponibile in SO ma non potevo averla trovata tramite il titolo della domanda poiché a quel punto non ero consapevole che farlo a livello di programmazione fosse l'unico modo. Speravo che ci fosse un po 'di config. Grazie comunque. – Zyga