¿Es posible detectar la orientación actual del dispositivo Android, sin progtwigr un oyente y manejar la matriz de posición? En mi aplicación, solo quiero saber la orientación actual, vertical u horizontal, en este momento. Sin embargo, no quiero escuchar eventos de axiometría u otros eventos.
Use el método getRotation
:
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int rotation = display.getRotation();
De la documentación:
Devuelve la rotación de la pantalla desde su orientación “natural”. El valor devuelto puede ser
Surface.ROTATION_0
(sin rotación),Surface.ROTATION_90
,Surface.ROTATION_180
oSurface.ROTATION_270
. Por ejemplo, si un dispositivo tiene una pantalla naturalmente alta, y el usuario la haSurface.ROTATION_90
costado para ir en una orientación horizontal, el valor devuelto aquí puede serSurface.ROTATION_90
oSurface.ROTATION_270
dependiendo de la dirección en que se giró. El ángulo es la rotación de los gráficos dibujados en la pantalla, que es la dirección opuesta a la rotación física del dispositivo. Por ejemplo, si el dispositivo se gira 90 grados en sentido contrario a las agujas del reloj, para compensar el renderizado se girará 90 grados en el sentido de las agujas del reloj y, por lo tanto, el valor devuelto aquí seráSurface.ROTATION_90
.
Tenga en cuenta que getRotation
se introdujo desde Android 2.2. Usa getOrientation
si tu objective son dispositivos más antiguos.
También puedes usar:
getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
Hay un buen artículo sobre este tema que es de lectura obligada: Una vuelta de pantalla se merece otra
Solo necesita saber la altura y el ancho de su canvas … su superficie … su monitor … etc.
tal vez puedas obtenerlo con:
if (canvas.getHeight()>canvas.getWidth() ) { //portrait } else { //landscape }
Creo que la forma más segura y sencilla es agregar una etiqueta para algún elemento de tu actividad en XML. Por ejemplo, establezca la etiqueta de viewpager en “retrato” en el diseño de retrato y configúrelo en “paisaje” en en paisaje. A continuación, en su prueba de oncreate para esa etiqueta, así:
if(mViewpager.getTag().equals("portrait")) // is in portrait else // is in landscape
Esto puede no ser relevante, pero si por casualidad necesita saber esto porque desea bloquear el dispositivo en su orientación actual, puede alternar entre las siguientes dos líneas de código.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);