2011-11-03 9 views
6

Estoy desarrollando un sitio web móvil, y me he encontrado con un problema interesante.¿El navegador de Android informa el tamaño de pantalla incorrecto?

Estoy probando en mi escritorio, así como en mi Motorola Droid (Android 2.2). Tengo consultas de medios configuradas para cargar 3 hojas de estilos diferentes (320 px de ancho, 480 px de ancho y 640 px de ancho). Noté que mi Droid está cargando la hoja de estilos de 320px a pesar de tener una pantalla de 480x854px. Configuré un pequeño JS para averiguar cuál es el ancho de la pantalla, y me informa 320px.

¿El navegador Android se ejecuta en MDPI en pantallas HDPI? Está escalando 320px correctamente para llenar la pantalla, pero estoy un poco confundido por qué está sucediendo esto.

Además, tengo < meta name = "viewport" content = "width = device-width" > en mi página, así que ese no es el problema.

Respuesta

5

Muchos fabricantes de equipos originales han optado por establecer las dimensiones predeterminadas de su navegador en base a las del iPhone (o resoluciones similares) a pesar de tener una resolución completamente diferente. Apple tuvo un problema similar con el lanzamiento de la 'pantalla retina' en el iPhone 4, donde la hoja de especificaciones indica 640px de ancho, pero screen.width devolverá 320px cuando esté configurado.

Como mencionó @omermuhammed, base su lógica en screen.width, CSS @media queries Y/O detección de dispositivo usando WURFL o DeviceAtlas.

El siguiente artículo también puede ser de interés en ayudar a aclarar la cuestión:

Un píxel no no es un píxel es un píxel por @ppk http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html

0

No conozco el contexto del navegador Android, pero he visto teléfonos en los que Android informaba acerca de un tamaño de pantalla incorrecto. Recomendaría basar su lógica en una combinación de cadena de agente de usuario Y resolución de pantalla. De esta manera puede detectar este teléfono y manejarlo de manera diferente, y usar mecanismos normales con otros.

0

he notado algunos problemas con la obtención de screen.width y screen.height en Android 4.2.

  • Las dimensiones no se actualizan para reflejar la orientación del dispositivo.

Puede corregir esto si lo desea obteniendo primero la orientación, luego cambiando los valores en consecuencia.

http://menacingcloud.com/?c=orientationScreenWidth

http://davidwalsh.name/orientation-change (uso matchMedia agradable) elementos de la interfaz de usuario

  • OS son resta de la dimensiones de la pantalla real del dispositivo.

E.g. La pantalla de nexus 7 es 1280x800, se informa 1205x800. 75px para los botones del sistema operativo.

  • Idealmente (en mi opinión), los valores se deben informar en píxeles CSS, no en píxeles del dispositivo.

E.g. nexus 7, la ventana CSS está configurada en 600px en vertical, pero screen.width informa 800px. Entonces DPR es aproximadamente 1.33

En general, screen.width y screen.height no son muy confiables (iOS también tiene problemas de orientación).

Esperemos que vuelva a editar esta respuesta con más detalle pronto.

Cuestiones relacionadas