Jaka jest różnica między jednostkami miary systemu Android?
Z Dokumentacji dla programistów Androida:
px Piksele - odpowiada rzeczywistym pikselom na ekranie.
in Inches - odpowiada fizycznemu rozmiarowi ekranu.
1 cal = 2,54 centymetra
mm Milimetry - w oparciu o fizyczny rozmiar ekranu.
pt Punkty - 1/72 cala w oparciu o fizyczny rozmiar ekranu.
dp lub dip Piksele niezależne od gęstości - abstrakcyjna jednostka, która jest oparta na fizycznej gęstości ekranu. Jednostki te są względne dla ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp do piksela będzie się zmieniał wraz z gęstością ekranu, ale niekoniecznie w bezpośredniej proporcji. Uwaga: Kompilator akceptuje zarówno "dip" jak i "dp", chociaż "dp" jest bardziej spójne z "sp".
sp Scale-independent Pixels - jest to jednostka podobna do dp, ale jest również skalowana według preferencji użytkownika'rozmiaru czcionki. Zalecane jest użycie tej jednostki przy określaniu rozmiaru czcionki, dzięki czemu zostanie ona dostosowana zarówno do gęstości ekranu jak i preferencji użytkownika'.
Z Understanding Density Independence In Android:
+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size |
+----------------+----------------+---------------+-------------------------------+
| ldpi | 120 dpi | 0.5 x 0.5 in | 0.5 in * 120 dpi = 60x60 px |
+----------------+----------------+---------------+-------------------------------+
| mdpi | 160 dpi | 0.5 x 0.5 in | 0.5 in * 160 dpi = 80x80 px |
+----------------+----------------+---------------+-------------------------------+
| hdpi | 240 dpi | 0.5 x 0.5 in | 0.5 in * 240 dpi = 120x120 px |
+----------------+----------------+---------------+-------------------------------+
| xhdpi | 320 dpi | 0.5 x 0.5 in | 0.5 in * 320 dpi = 160x160 px |
+----------------+----------------+---------------+-------------------------------+
| xxhdpi | 480 dpi | 0.5 x 0.5 in | 0.5 in * 480 dpi = 240x240 px |
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi | 640 dpi | 0.5 x 0.5 in | 0.5 in * 640 dpi = 320x320 px |
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit | Description | Units Per | Density | Same Physical Size |
| | | Physical Inch | Independent | On Every Screen |
+---------+-------------+---------------+-------------+--------------------+
| px | Pixels | Varies | No | No |
+---------+-------------+---------------+-------------+--------------------+
| in | Inches | 1 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| mm | Millimeters | 25.4 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| pt | Points | 72 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| dp | Density | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
| sp | Scale | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
Więcej informacji można również znaleźć w Dokumentacji projektu Google.
Prawie wszystko na ten temat i jak osiągnąć najlepsze wsparcie dla wielu ekranów o różnych rozmiarach i gęstości jest bardzo dobrze udokumentowane tutaj:
Rozmiar ekranu
Rzeczywisty rozmiar fizyczny, mierzony jako przekątna ekranu'. Dla uproszczenia, Android grupuje wszystkie rzeczywiste rozmiary ekranów w cztery uogólnione rozmiary: mały, normalny, duży i bardzo duży.Gęstość ekranu
Liczba pikseli w obrębie fizycznego obszaru ekranu; zwykle określana jako dpi (dots per inch). Na przykład. "ekran o niskiej" gęstości ma mniej pikseli w obrębie danego obszaru fizycznego, w porównaniu do "normalnego" lub "wysokiego" ekranu gęstości. Dla uproszczenia, Android grupuje wszystkie rzeczywiste gęstości ekranu do sześciu uogólnionych gęstości: niska, średnia, wysoka, extra-wysoka, extra-extra-wysoka, i extra-extra-extra-high.Orientacja
Orientacja ekranu z punktu widzenia użytkownika'br/>. widoku. Jest to orientacja pozioma lub pionowa, co oznacza, że proporcje ekranu'są albo poziome albo pionowe. aspect ratio jest odpowiednio szeroki lub wysoki. Należy mieć świadomość, że nie tylko czy różne urządzenia działają w różnych orientacjach przez domyślnie, ale orientacja może się zmienić w czasie działania, gdy użytkownik obraca urządzenie.
Rozdzielczość
Całkowita liczba fizycznych pikseli na ekranie. Podczas dodawania wsparcia dla wielu ekranów, aplikacje nie pracują bezpośrednio z rozdzielczością; aplikacje powinny zajmować się tylko z rozmiarem ekranu i gęstością, jak określono przez uogólnione grupy rozmiaru i gęstości.
Piksel niezależny od gęstości (dp)
Wirtualna jednostka pikseli, której należy używać podczas definiowania układu UI, aby wyrazić wymiary układu lub pozycję w sposób niezależny od gęstości. Piksel niezależny od gęstości jest równoważny jednemu fizycznemu pikselowi na ekranie o rozdzielczości 160 dpi ekranu, co jest podstawową gęstością zakładaną przez system dla "średniej" gęstości ekranu. W trybie runtime, system transparentnie obsługuje wszelkie skalowanie jednostek dpi, jeśli jest to konieczne, w oparciu o rzeczywistą gęstość używanego ekranu. Konwersja jednostek dp na piksele ekranu jest prosta:px = dp * (dpi / 160)
. Na przykład, na ekranie o rozdzielczości 240 dpi, 1 dp równa się 1,5 fizycznego piksela. Powinieneś zawsze używać jednostek dp podczas definiując swoją aplikację's UI, aby zapewnić prawidłowe wyświetlanie UI na ekranach o różnej gęstości.
Jeśli poważnie myślisz o tworzeniu aplikacji na Androida dla więcej niż jednego typu urządzenia, powinieneś był przeczytać dokument dotyczący rozwoju wsparcia ekranów co najmniej raz. Ponadto, zawsze dobrze jest znać rzeczywistą liczbę aktywnych urządzeń, które mają określoną konfigurację ekranu.
Rozwinę więcej na temat tego, jak dokładnie dp konwertuje się na px:
150 x 150 px
zajmie 150 * 150 dp
miejsca na ekranie.150 x 150 px
zajmie 100 * 100 dp
przestrzeni ekranu.150x150 px
zajmie 75 * 75 dp
miejsca na ekranie.W drugą stronę: powiedzmy, że chcesz dodać obraz do swojej aplikacji i potrzebujesz go do wypełnienia 100 * 100 dp
kontrolki. Będziesz musiał utworzyć różne rozmiary obrazów dla obsługiwanych rozmiarów ekranu:
100 * 100 px
dla mdpi