2011-12-19 7 views
11

Los dispositivos con Ice Cream Sandwich pueden usar las teclas programables en pantalla, y esto significa que parte de la propiedad de la pantalla se toma con estas teclas. Necesito obtener la resolución de pantalla real, y no la resolución, menos el espacio ocupado por las teclas programables.Obtenga la resolución de pantalla real en Ice Cream Sandwich

He intentado lo siguiente, pero ni las obras:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
Log.d("SCREEN RES", "Width: " + width + ". Height: " + height); 

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
height = metrics.heightPixels; 
width = metrics.widthPixels; 
Log.d("SCREEN RES", "Width: " + width + ". Height: " + height); 

Aquí está la salida:

12-19 20:18:42.012: D/SCREEN RES(20752): Width: 1196. Height: 720 
12-19 20:18:42.012: D/SCREEN RES(20752): Width: 1196. Height: 720 

La resolución real de la pantalla es de 1280 x 720 píxeles, no los 1196 x 720 píxeles.

¿Alguna idea?

Editar

estoy usando el siguiente código para que la aplicación de pantalla completa:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
+0

conclusión acerca de cómo obtener resolución real: http://stackoverflow.com/questions/11824193/htc-sensation-real-resolution – thecr0w

Respuesta

9

La API devuelve el número de píxeles de una aplicación puede utilizar, por lo que este es el resultado correcto .

+0

¿Y si pongo la aplicación en modo de pantalla completa de esta manera? 'getWindow(). getDecorView(). setSystemUiVisibility (2);'. Esto elimina las teclas programables y me permite utilizar toda la pantalla y todos los 1280 píxeles de ancho. –

+0

No puedo editar mi comentario anterior, pero 2 == 'View.SYSTEM_UI_FLAG_HIDE_NAVIGATION'. –

+9

@Romain Guy: hay situaciones en las que la aplicación necesita saber el tamaño completo de la pantalla, aunque puede usar menos que eso. Por ejemplo, el diseñador puede querer tener algo centrado en la pantalla del dispositivo, no en el espacio disponible para la aplicación. Por lo tanto, si bien es necesario contar con una API que devuelva el número de píxeles que la aplicación puede usar, también existe la necesidad de una API que devuelva las dimensiones de la pantalla física. –

1

A partir del nivel de API 17 (Android 4.2 Jelly Bean), se puede obtener el tamaño real de la pantalla de la siguiente manera:

Point size = new Point(); 
Display display = getWindowManager().getDefaultDisplay(); 
display.getRealSize(size); 

size contendrá ahora el tamaño de visualización basado en la orientación (es decir, x lo hará. dejarse/derecha con respecto al usuario, no el dispositivo)

Cuestiones relacionadas