Respuestas:
¡Sí, es implementable!
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivityInfo
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
Consulte el enlace:
Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait);
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape);
buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
});
http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatic.html
Sí, puede configurar la orientación de la pantalla mediante programación en cualquier momento que desee usando:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
para el modo horizontal y vertical respectivamente. El método setRequestedOrientation () está disponible para la clase Activity , por lo que se puede usar dentro de tu Activity.
Y así es como puede obtener la orientación actual de la pantalla y configurarla adecuadamente según su estado actual:
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
final int orientation = display.getOrientation();
// OR: orientation = getRequestedOrientation(); // inside an Activity
// set the screen orientation on button click
Button btn = (Button) findViewById(R.id.yourbutton);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
}
}
});
Tomado de aquí: http://techblogon.com/android-screen-orientation-change-rotation-example/
EDITAR
Además, puede obtener la orientación de la pantalla mediante Configuration
:
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
para obtener la orientación de la pantalla actual: stackoverflow.com/a/21909327/1037294
getRequestedOrientation()
le da UNSPECIFIED
cuando inicia la aplicación. Así que con el oyente por encima de ella no va a cambiar la pantalla y si se agrega UNSPECIFIED
a la switch
que debe poner la pantalla en una de Vertical / Horizontal primera posición.
Siempre que sea posible, no utilice SCREEN_ORIENTATION_LANDSCAPE o SCREEN_ORIENTATION_PORTRAIT. En su lugar use:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Estos permiten al usuario orientar el dispositivo en orientación horizontal o vertical, respectivamente. Si alguna vez ha tenido que jugar un juego con un cable de carga en su estómago, entonces sabe exactamente por qué es importante para el usuario tener ambas orientaciones disponibles.
Nota: Para los teléfonos, al menos varios de los que he verificado, solo permite el modo vertical "con el lado derecho hacia arriba"; sin embargo, SENSOR_PORTRAIT funciona correctamente en tabletas.
Nota: esta función se introdujo en el nivel de API 9, por lo que si debe admitir 8 o menos (no es probable en este momento), utilice en su lugar:
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Use esto para establecer la orientación de la pantalla:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
o
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
y no olvides agregar esto a tu manifiesto:
android:configChanges = "orientation"
"orientation|screenSize"
, mira aquí: developer.android.com/guide/topics/resources/…
Un código de trabajo:
private void changeScreenOrientation() {
int orientation = yourActivityName.this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
showMediaDescription();
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
hideMediaDescription();
}
if (Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}, 4000);
}
}
llame a este método en su botón haga clic