2011-08-13 19 views
6

Można powiedzieć, że jeśli rozdzielczość ekranu zakładki Galaxy (w trybie pionowym) wynosi 600px, a szerokość ekranu to 3.55inch, gęstość ekranu będzie wynosić 600/3.55 = 169 dpi. Wiedząc, że i pamiętając drogę niezależne pikseli urządzenia (DP) oblicza (http://developer.android.com/guide/practices/screens_support.html):Opis gęstości ekranu dla tabletu Samsung Galaxy

px = dp * (dpi/160); 
600 = dp * (169/160); 
dip = 568 

Więc rysunek poziomą linię 568dp (urządzenie niezależne pikseli) szerokość zaczynając od pozycji 0 musi dokładnie odpowiadać szerokości ekranu. Ale jeśli spróbujesz tego na urządzeniu, zobaczysz, że szerokość ekranu to 400dp. Będę ponownie użyć tego samego wzoru, ale dla uzyskania DPI:

600 = 400 * (dpi/160); 
dpi = 240 

Więc o 240dpi, 3.55inch szerokość ekranu i 600pixels, to znaczy, że jeden fizyczny piksel składa się z bardziej „kropek” w przeciwnym razie parametrów odpowiada do szerokość 852pixel (3.55*240).

Uważam, że dpi to punkty na cal, czyli piksele na cal. Ale to wydaje się nie być prawdą ...

Dodano później:
To (http://developer.android.com/guide/topics/resources/more-resources.html#Dimension) mówi:

160dp jest zawsze jeden cal niezależnie od gęstości ekranu

Która to nie jest prawda. Wystarczy sprawdzić źródło pomiarowego z tego: Difference between android dimension: pt and dp

Dodane nawet później:
Powód pytam jest to, że naruszono zasadę, że 160dp = 1inch prowadzi do tego, że podczas określania szerokości do sterowania np 320dp obejmie na Galaxy Tab znacznie większa część, że to naprawdę konieczne i znacznie większy niż to, czego można oczekiwać od 600x1024px ekranie ...

Dzięki za wyjaśnienie BR Sten

+0

Myślę, że może być mylące dpi z dipem, niezależne od urządzenia piksele. – Petrus

+0

Witam, czy możesz być bardziej konkretny, co robię nie tak? Gdzie popełniłem błąd? – STeN

+0

Być może błędnie przeczytałem wcześniej, ale może chcesz sprawdzić . Myślę, że może nie zwrócić gęstości spodziewanej z twoich obliczeń. Nie sprawdziłem twojej matematyki, ale może wszystko to się zgadza, jeśli gęstość wynosi 160 zamiast 169? – Petrus

Odpowiedz

8

Galaxy Tab (7") nie robi . „t zgłosić swoją rzeczywistą gęstość Aby zrozumieć ten problem, należy przeczytać następujący artykuł:

http://realmike.org/blog/2010/12/21/multiple-screen-sizes-with-processing-for-android/

Widocznie, to także to, co znaleziono, kiedy Samsung Galaxy wykonane Tab. Galaxy Tab ma ekran 7 ", 1024 × 600 z rozdzielczością 170 dpi. Jednak zakładka nie zgłasza gęstości jako "mdpi", ale jako "hdpi", więc układ wygląda dokładnie tak, jak na drugim zrzucie ekranu. Gdyby używano "mdpi", ikony miałyby szerokość 0,28 cala, z "hdpi", mają szerokość 0,42 cala - nie jest to duża oferta i muszę przyznać, że układ wygląda ładniej w ten sposób.

Artykuł zawiera kilka zdjęć, które ułatwią zrozumienie problemu.

+1

Witam, dobry artykuł, ale w jaki sposób powinniśmy poprawnie określić rozmiary widżetów? Wydaje się, że używanie dp jest w porządku tylko tak długo, jak długo urządzenia zgłaszają rzeczywistą gęstość, a nie gęstość pseudosób, jak w przypadku Galaxy-Tab ... – STeN

+0

Powinieneś to określić za pomocą dp. Galaxy Tab pokaże twoje obiekty większe niż pokazywałoby, gdyby używało rzeczywistej gęstości, ale Samsung wierzy, że osiąga lepszy rezultat. Sądząc po obrazach z tego posta, zgadzam się z Samsungiem! Ponadto postępuj zgodnie z poniższymi wskazówkami: http://developer.android.com/guide/practices/screens_support.html#screen-independence –

+0

Okay, zgadzam się - w każdym razie dokumentacja systemu Android jest błędna, mówiąc ** 160dp = 1inch **. To jest naprawdę mylące. Wydaje się również, że rozdzielczość może nie być najlepszym sposobem na wybranie źródeł do rysowania, ponieważ nie uwzględnia rozmiaru ekranu, gdy używana jest gęstość psedu (gęstość logiczna) - może być coś, co Google może zmienić w przyszłości ... próbując klasy ** DisplayMetrics ** - zwraca dokładne fizyczne piksele na cal (np. 169 dpi), a także gęstość logiczną. – STeN

Powiązane problemy