Android: cómo averiguar la relación de aspecto exacta de píxeles de los dispositivos mediante programación?
Quiero mostrar los azulejos que se supone que son todos los cuadrados en mi aplicación de Android, con OpenGL ES 2.0.
¿Es posible que una aplicación instalada en un dispositivo Android descubra la relación de aspecto exacta de los píxeles individuales de la pantalla del dispositivo mediante programación sin ninguna entrada del usuario?
- La pintura con libgdx hace que los objetos parpadeen
- Androide. Cómo reproducir video en Surface (OpenGL)
- ¿Mejor velocidad de cuadro que dibuja los mapas de bits en una lona?
- La mejor manera de hacer el bucle del juego para Android usando OpengGLSurface
- Instalar OpenGL ES y código de compilación para android
- Cómo dibujar una imagen de fondo grande con libgdx - las mejores prácticas?
- OpenGL ES 2 - un gran vs múltiples texturas pequeñas atlas. ¿Cuál es el mejor rendimiento?
- ¿Diferencias y ventajas de SurfaceView vs GLSurfaceView en Android?
- Decodificación y reproducción de vídeo en Android
- parámetros de glGenTexture?
- Simulación de swaps de paletas con Shaders OpenGL (en LibGDX)
- GLSurfaceView dentro del fragmento que no se representa cuando se reinicia
- Android Opengl 2.0 Alpha Mezcla tema - texturas medio transparentes
Creo que lo que buscas es la clase DisplayMetrics . Tiene campos heightPixels
y widthPixels
que dan dimensiones de pantalla, así como otra información útil como densidad de píxeles.
Como se menciona en la documentación, puede obtener DisplayMetrics para su dispositivo utilizando getWindowManager().getDefaultDisplay().getMetrics(metrics);
No recomendaría usar los valores xdpi y ydpi que obtiene de Display.getMetrics. Estos valores son conocidos por ser incorrectos para algunos dispositivos (por ejemplo, en un Huawei Ascend P1 obtengo valores xdpi y ydpi de 152.4 y 451.6, que definitivamente están lejos, los píxeles son mucho más cuadrados que eso). Si intenta dibujar un cuadrado perfecto basado en estos valores incorrectos, puede terminar con un rectángulo muy estirado en algunos dispositivos. En este momento el mejor consejo que tengo es asumir que los píxeles son cuadrados, lo que entiendo no es la situación ideal. Consulte https://groups.google.com/forum/#!topic/android-developers/g56jV0Hora0 . El código de la plataforma Android no utiliza estos valores. En lugar de densidad y densityDPI se utilizan para ambas coordenadas xey. Incluso podría tratar de comparar sus valores xdpi y ydpi y si difieren significativamente, a continuación, predeterminado a píxeles cuadrados, aunque creo que también sería una solución desordenada.