2012-12-25 14 views
7

Sto sviluppando un widget Android e la necessità di distinguere tra Galaxy S e Galaxy S2. Ho quasi letto tutto sugli articoli di dimensioni e densità dello schermo. E ho bisogno, ovviamente, di utilizzare i nuovi qualificatori con il nuovo qualificatore Larghezza minima. Il mio problema è che il qualificatore sw320dp corrisponde a Galaxy S e anche a Galaxy S2. Ma ho bisogno di un altro layout per Galaxy S2, ma non posso trovare il giusto qualificatore per questo.più piccolo Larghezza per Galaxy S e Galaxy S2

Definizione Galaxy S, densità 233

dimensione dello schermo in pixel: 480 pixel x 800 pixel

Dimensioni schermo dp: 329dp x 549dp (causa 1DP = 1 pixel/(densità/160)

-.> in modo che il qualificatore sw320dp deve corrispondere qui e sì lo fa

Definizione Galaxy S II, densità 218

Dimensioni dello schermo in pixel: 480 pixel x 800 pixel

Dimensioni schermo dp: 352dp x 587dp (causa 1DP = 1 pixel/(densità/160)

-> in modo che il qualificatore sw340dp deve corrispondere qui, ma NO doesnt

(Teste d in emulatore e su dispositivo reale)

I drawable non sono il problema, ma il mio layout, in particolare l'altezza e le dimensioni del testo sono diversi su questi dispositivi, quindi ho davvero bisogno di un layout specifico per loro.

Qualcuno ha un'idea o più esperienza con esso?

+1

afaik, il quadro non utilizza la densità effettiva ma "arrotonda" con l'approssimazione di 120, 160, 240, 320px, corrispondente a bassa, med, alta e x-alta. Quindi entrambi i dispositivi avrebbero segnalato sw = 320. Questo può portare a risultati irregolari - Ho anche problemi con questo sui dispositivi Galaxy – CjS

+0

sì, è anche la mia esperienza .... ma anche all'interno dell'emulatore non possiamo fare il setup per i dispositivi reali? – user1013443

+1

Questo non ha nulla a che fare con l'emulatore. È una caratteristica del framework. Avrai gli stessi problemi sul dispositivo attuale – CjS

risposta

5

densità dello schermo, come definito dal materiale di riferimento è:

La quantità di pixel all'interno di un'area fisica dello schermo; di solito indicato come dpi (punti per pollice). Ad esempio, uno schermo con densità "bassa" ha meno pixel all'interno di una determinata area fisica, rispetto a uno schermo con densità "normale" o "alta". Per semplicità, Android raggruppa tutte le densità dello schermo effettive in quattro densità generalizzate: bassa, media, alta e molto alta.

basso = 120dpi med = 160dpi alta = 240 dpi XHI = 320dpi

Così il Galaxy SII, con una vera e propria densità 218, viene assegnato un densità di "alta" di 240 in dp calcoli. Quindi la larghezza dello schermo in dp è 480/240 * 160 = 320.

Questo fa schifo, sono d'accordo. Ma è come funziona.

http://developer.android.com/guide/practices/screens_support.html

+0

Capisco già cosa fa Android ... ma il fatto è che non posso emulare un vero Samsung Galaxy SII o SIII, i telefoni Android più usati ... questo mi fa schifo ed è davvero sorprendente .. – user1013443

+1

Penso che cosa ti manca è che anche il vero Galaxy SII avrà una sw di 320dp, e NON 340. Quindi stai emulando il dispositivo reale con precisione – CjS

+0

Il fatto è: non è possibile emulare un dispositivo reale. Solo se un dispositivo ha una densità esattamente uguale a uno tra basso, medio, alto o xdpi. O come impostare l'emulatore per i telefoni Galaxay? Ho provato tutto. Il dispositivo reale ha sempre un aspetto molto diverso. – user1013443

Problemi correlati