2012-12-25 9 views
7

Ich entwickle ein Android Widget und muss unterscheiden zwischen Galaxy S und Galaxy S2. Ich lese fast alles über Bildschirmgrößen und Dichten Artikel. Und ich brauche natürlich die neuen Qualifier mit dem neuen Qualifier Kleinste Breite zu verwenden. Mein Problem ist, dass der sw320dp Qualifier für Galaxy S und auch für Galaxy S2 passt. Aber ich brauche ein anderes Layout für Galaxy S2, kann aber nicht den richtigen Qualifier dafür finden.Kleinste Breite für Galaxy S und Galaxy S2

Definition von Galaxy S, Dichte 233

Bildschirmgröße in Pixel: 480 Pixel x 800 Pixel

Bildschirmgröße in dp: 329dp x 549dp (Ursache 1 dp = 1pixel/(Dichte/160)

. -> so der Qualifier sw320dp muss hier passen und ja, es tut

Definition von Galaxy S II, Dichte 218

Bildschirmgröße in Pixel: 480 Pixel x 800 Pixel

Bildschirmgröße in dp: 352dp x 587dp (Ursache 1 dp = 1pixel/(Dichte/160)

-> so der Qualifier sw340dp muss hier passen, aber NO tut es

(Teste d in Emulator und auf reale Gerät)

Die Drawables sind nicht das Problem, aber mein Layout, vor allem der Höhe und Textgrößen sind unterschiedlich auf diesen Geräten, so brauche ich wirklich ein bestimmtes Layout für sie.

Jeder hat eine Idee oder mehr Erfahrung damit?

+1

afaik, wird der Rahmen nicht die tatsächliche Dichte verwenden, sondern "rundet" zum nächsten von 120, 160, 240, 320 Pixel, auf niedrigen entsprechenden, med, hoch und x-Höhe. Also würden beide Geräte sw = 320 melden. Dies kann zu unregelmäßigen Ergebnissen führen - ich habe auch Probleme mit diesem Galaxy-Geräten – CjS

+0

ja, das ist genau meine Erfahrung als auch .... aber auch innerhalb des Emulators können wir nicht das Setup für die echten Geräte machen? – user1013443

+1

Das hat nichts mit dem Emulator zu tun. Es ist eine Eigenschaft des Rahmens. Sie haben die gleichen Probleme auf dem Gerät – CjS

Antwort

5

Rasterdichte, wie durch das Bezugsmaterial definiert ist:

Die Menge von Pixeln innerhalb eines physikalischen Bereich des Bildschirms; normalerweise als dpi (Punkte pro Zoll) bezeichnet. Zum Beispiel weist ein Bildschirm mit "niedriger" Dichte im Vergleich zu einem Bildschirm mit "normaler" oder "hoher" Dichte weniger Pixel innerhalb eines gegebenen physikalischen Bereichs auf. Zur Vereinfachung gruppiert Android alle tatsächlichen Bildschirmdichten in vier generalisierte Dichten: niedrig, mittel, hoch und extra hoch.

low = 120dpi med = 160dpi high = 240dpi xhi = 320dpi

So ist die Galaxy SII, mit einer echten Dichte von 218, eine "hohe" Dichte von 240 in dp zugewiesen wird Berechnungen. Daher ist die Breite des Bildschirms in dp 480/240 * 160 = 320.

Das ist scheiße, stimme ich zu. Aber so funktioniert es.

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

+0

Ich verstehe schon, was Android tut ... aber gut ... Fakt ist, ich kann kein echtes Samsung Galaxy SII oder SIII, die am häufigsten verwendeten Android-Handys emulieren ... das saugt und ist wirklich überraschend .. – user1013443

+1

Ich denke was Sie vermissen, dass sogar das echte Galaxy SII einen sw von 320dp, und nicht 340 hat. So emulieren Sie das reale Gerät genau – CjS

+0

Fakt ist: Es ist nicht möglich, ein echtes Gerät zu emulieren. Nur wenn ein Gerät eine Dichte hat, die genau mit der von low, med, high oder xdpi übereinstimmt. Oder wie man den Emulator für Galaxay Telefone einrichtet? Ich habe alles versucht. Echtes Gerät sieht immer sehr anders aus. – user1013443