2011-11-03 14 views
6

Sto sviluppando un sito web per dispositivi mobili e ho riscontrato un problema interessante.Il browser Android riporta la dimensione dello schermo sbagliata?

Sto testando sul mio desktop, oltre che sul mio Motorola Droid (Android 2.2). Ho impostato le medie per caricare 3 diversi fogli di stile (320 px di larghezza, 480 px di larghezza e 640 px di larghezza). Ho notato che il mio Droid sta caricando il foglio di stile 320px nonostante abbia uno schermo 480x854px. Ho creato un piccolo JS per scoprire qual è la larghezza dello schermo e sta segnalando 320 px.

Il browser Android funziona in MDPI su schermi HDPI? Sta ridimensionando correttamente il 320px per riempire lo schermo, ma sono un po 'confuso perché questo sta accadendo.

Inoltre, ho < meta name = "viewport" content = "width = device-width" > sulla mia pagina, quindi non è questo il problema.

risposta

5

Molti OEM hanno scelto di impostare le dimensioni del riquadro di visualizzazione del browser di default basati su quelli di iPhone (o risoluzioni simili) pur avendo una risoluzione del tutto diverso. Apple ha avuto un problema simile con il rilascio del 'retina display' su iPhone 4 in cui la scheda tecnica stati 640px tutto, ma screen.width tornerà 320px quando è impostato.

Poiché @omermuhammed ha menzionato la logica in base a screen.width, le query @media e/o il rilevamento dei dispositivi tramite WURFL o DeviceAtlas.

Il seguente articolo può anche essere di interesse nel contribuire a chiarire la questione:

Un pixel non è un pixel non è un pixel da @ppk http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html

0

Non so nel contesto del browser Android, ma ho visto portatili in cui Android ha segnalato dimensioni dello schermo errate. Suggerirei di basare la tua logica su una combinazione di stringa di user agent e risoluzione dello schermo. In questo modo è possibile rilevare questo telefono e gestire in modo diverso e utilizzare i normali meccanismi con gli altri.

0

Ho notato alcuni problemi con ottenere screen.width e screen.height su Android 4.2.

  • Le dimensioni non vengono aggiornate per riflettere l'orientamento del dispositivo.

È possibile correggere questo se si desidera ottenere prima l'orientamento, quindi cambiare i valori di conseguenza.

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

http://davidwalsh.name/orientation-change (bello utilizzo Matchmedia) elementi dell'interfaccia utente

  • OS sono sottratti dalle effettive dimensioni dello schermo del dispositivo.

Ad es lo schermo di nexus 7 è 1280x800, 1205x800 è segnalato. 75px per i pulsanti del sistema operativo.

  • Idealmente (a mio parere), i valori devono essere riportati in pixel CSS, non in pixel del dispositivo.

Ad es Nexus 7, viewport CSS è impostata su 600px in verticale, ma screen.width riferisce 800px. Quindi DPR è di circa 1.33

In generale, screen.width e screen.height non sono molto affidabili (iOS ha anche problemi di orientamento).

Spero di poter modificare questa risposta con maggiori dettagli presto.

Problemi correlati