Ten fajny konwerter pokazuje to najlepiej , moim zdaniem. Jest to również bardzo przydatne do eksportowania duszków z Photoshopa lub projektowania układu dla wymiaru fizycznego.
px Pixels - odpowiada rzeczywistej liczbie pikseli na ekranie.
w calach - w oparciu o fizyczny rozmiar 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 oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Uwaga: Kompilator akceptuje zarówno „dip”, jak i „dp”, chociaż „dp” jest bardziej spójny z „sp”.
sp Piksele niezależne od skali - działa podobnie do jednostki dp, ale jest również skalowane według preferencji użytkownika dotyczących rozmiaru czcionki. Zaleca się używanie tego urządzenia podczas określania rozmiarów czcionek, aby były one dostosowane zarówno do gęstości ekranu, jak i preferencji użytkownika.
mimo że powinny być tym samym, mam wiele problemów z dp, podczas gdy wszystko działa dobrze z dipem
DallaRosa
247
Jedna uwaga na temat db / sp, która nie jest całkowicie oczywista: Skalowanie, które następuje dla nich, nie zależy od rzeczywistej gęstości urządzeń (dpi), ale od tego, do jakiego „przedziału” gęstości należy: dostępne przedziały to: 120,160,240,320. Może to powodować pewne problemy z obsługą ekranów, które są znacząco różne, ale takie same są spakowane.
Fraggle,
15
Zauważ, że w dokumentacji nie ma już mowy o „zanurzeniu”, tylko „dp”, chociaż kompilator nadal wydaje się akceptować „zanurzenie”.
Adam Rosenfield
15
@android_developer (5 komentarzy powyżej) dpma nie mieć dokładnie taką samą długość fizyczną. (Chociaż jest blisko.) Zobacz komentarz @ Fraggle na temat wiaderka. Oznacza to, że 48dp będzie wynosić około 8 mm (0,3 cala), ale może różnić się do 11 mm.
intrepidis
11
Powodem tego jest to, że programiści mogą testować swoje aplikacje na kilku urządzeniach o różnych gęstościach i mieć pewność, że układy będą wyglądały tak samo na wielu urządzeniach. Więc nawet jeśli fizyczny rozmiar przycisków itp. Zmieni się nieco, ogólny wygląd działania będzie taki sam.
intrepidis,
684
Prawie wszystko na ten temat i jak osiągnąć najlepszą obsługę wielu ekranów o różnych rozmiarach i gęstościach jest bardzo dobrze udokumentowane tutaj:
Rozmiar ekranu
Rzeczywisty rozmiar fizyczny, mierzony jako przekątna ekranu. Dla uproszczenia system Android grupuje wszystkie rzeczywiste rozmiary ekranu na cztery ogólne rozmiary: mały, normalny, duży i bardzo duży.
Gęstość ekranu
Liczba pikseli w fizycznym obszarze ekranu; zwykle określane jako dpi (kropki na cal). Na przykład ekran o „niskiej” gęstości ma mniej pikseli w danym obszarze fizycznym, w porównaniu do ekranu o „normalnej” lub „wysokiej” gęstości. Dla uproszczenia system Android grupuje wszystkie rzeczywiste gęstości ekranu na sześć ogólnych gęstości: niska, średnia, wysoka, bardzo wysoka, bardzo wysoka i bardzo wysoka.
Orientacja Orientacja ekranu z punktu widzenia użytkownika. Jest to krajobraz lub portret, co oznacza, że proporcje ekranu są odpowiednio szerokie lub wysokie. Należy pamiętać, że nie tylko różne urządzenia domyślnie działają w różnych orientacjach, ale orientacja może się zmienić w czasie wykonywania, gdy użytkownik obraca urządzenie.
Rozdzielczość Całkowita liczba fizycznych pikseli na ekranie. Podczas dodawania obsługi wielu ekranów aplikacje nie działają bezpośrednio z rozdzielczością; aplikacje powinny dotyczyć wyłącznie rozmiaru i gęstości ekranu, określonych przez ogólne grupy wielkości i gęstości.
Piksel niezależny od gęstości (dp) Wirtualna jednostka pikseli, której należy użyć podczas definiowania układu interfejsu użytkownika, aby wyrazić wymiary lub pozycję układu w sposób niezależny od gęstości. Piksel niezależny od gęstości odpowiada jednemu pikselowi fizycznemu na ekranie o rozdzielczości 160 dpi, który jest podstawową gęstością przyjętą przez system dla ekranu o „średniej” gęstości. W czasie wykonywania system w przejrzysty sposób obsługuje dowolne skalowanie jednostek dp, zależnie od rzeczywistej gęstości używanego ekranu. Konwersja jednostek DP pikselach jest prosta
px = dp * (dpi / 160). Na przykład na ekranie o rozdzielczości 240 dpi 1 dp to 1,5 piksela fizycznego. Podczas definiowania interfejsu użytkownika aplikacji należy zawsze używać jednostek dp, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach o różnych gęstościach.
Jeśli poważnie myślisz o opracowaniu aplikacji na Androida dla więcej niż jednego typu urządzenia, powinieneś przeczytać dokument dotyczący programowania rozwoju przynajmniej raz. Ponadto zawsze dobrze jest znać rzeczywistą liczbę aktywnych urządzeń, które mają określoną konfigurację ekranu.
Więc jeśli użyjesz dp dla przycisku i sp dla rozmiaru czcionki tekstu przycisku, co stanie się, gdy użytkownik zacznie skalować? Tekst zostanie powiększony, ale czy przycisk to dostosuje również poprzez powiększenie?
Wytze
11
@Wytze, nie. Dla rzeczy, w których dopasowanie tekstu może być problemem, użyłbym tylko dipa, aby rzeczy się nie przepełniły.
eski
12
@Wytze A ja, przeciwnie, używam sp zarówno dla tekstu, jak i wszystkiego, co zawiera. Na przykład, jeśli mam przycisk ze stałym rozmiarem i tekstem w środku, przypisałbym rozmiar przycisku w sp, aby skalował się również w razie potrzeby. W przeciwnym razie użytkownik będzie zirytowany, że zwiększył rozmiar tekstu i nie zwiększył się. Oczywiście układ powinien być wystarczająco elastyczny, aby na to pozwolić.
Malcolm
2
Jeśli projektanci nie pozostawiają miejsca na skalowanie elementów tekstowych zgodnie z rozmiarem sp, jedną z opcji jest przełączenie na dowolny układ, którego użyjesz dla węższego urządzenia, a następnie skalowanie wszystkiego równomiernie za pomocą (DisplayMetrics.scaledDensity / DisplayMetrics. gęstość).
John Mellor,
@Sam brak wolnego miejsca spowoduje również problemy podczas i18n
zmniejszając aktywność
346
Omówię dokładniej, w jaki sposób dp konwertuje dp na px:
Jeśli działa na urządzeniu mdpi, 150 x 150 pxobraz zajmie miejsce 150 * 150 dpna ekranie.
Jeśli działa na urządzeniu HDpi, 150 x 150 pxobraz zajmie miejsce 100 * 100 dpna ekranie.
Jeśli działa na urządzeniu xhdpi, 150x150 pxobraz zajmie miejsce 75 * 75 dpna ekranie.
Odwrotnie: powiedz, że chcesz dodać obraz do swojej aplikacji i potrzebujesz go do wypełnienia 100 * 100 dpformantu. Musisz utworzyć obrazy o różnych rozmiarach dla obsługiwanych rozmiarów ekranu:
Jak obliczamy piksele dla hdpi, ldpi, mdpi itp. Słyszałem, że używamy tej formuły..px = dp * (dpi / 160); Czy możesz wyjaśnić mi tę formułę PLZ?
Rakesh patanga
@Rakeshpatanga Przy gęstości 160 dpi, 1 px = 1 dp (fizyczny piksel i abstrakcja dp są takie same). Oznacza to, że dla pojedynczego dp mamy (1) * (160/160) = 1 lub dokładnie 1 px. Przy wyższej gęstości 320 dpi pojedynczy dp wynosi (1) * (320/160) = 2 piksele, a dwa dp to (2) * (320/160) = 4 piksele.
samis
Ustaw je w jednej linii, aby zobaczyć: | 1dp |, | ___ | ___ | 160, | _ | | _ | _ | _ | 320 (wstaw podział wiersza po przecinkach). | _ | = 1 p i x el.
samis
re „Musisz utworzyć obrazy o różnych rozmiarach dla obsługiwanych rozmiarów ekranu:” To zależy. W przypadku małych obrazów o wysokim kontraście , np. Ikon, rozsądnie jest utworzyć co najmniej najmniejszy rozmiar (aby mieć pewność, że będzie wyraźny) oraz dość duży rozmiar (aby duże wersje nie wyglądały na rozmyte). Ale nawet w przypadku ikon można zezwolić na skalowanie jednego obrazu w różnych rozmiarach i przy większej gęstości. W przypadku zdjęć wystarczy określić obszar wyświetlania, który ma być wypełniony, i polegać na skalowaniu urządzenia.
ToolmakerSteve
285
px - Piksele - punkt na skalę odpowiada rzeczywistej liczbie pikseli na ekranie.
i - Cale - w oparciu o fizyczny rozmiar ekranu.
mm - Milimetry - w oparciu o fizyczny rozmiar ekranu.
pt - Punkty - 1/72 cala w oparciu o fizyczny rozmiar ekranu.
dp - Piksele niezależne od gęstości - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc dpjeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Uwaga: Kompilator akceptuje zarówno dipi dp, choć dpjest bardziej zgodne z sp.
sp - Piksele niezależne od skali - jest to jak dpjednostka, ale jest również skalowane według preferencji użytkownika dotyczących rozmiaru czcionki. Zaleca się korzystanie z tego urządzenia podczas określania rozmiarów czcionek, aby dopasować je zarówno do gęstości ekranu, jak i preferencji użytkownika.
Weźmy przykład dwóch ekranów, które są tego samego rozmiaru, ale jeden ma gęstość ekranu 160 dpi (kropki na cal, tj. Piksele na cal), a drugi to 240 dpi.
Lower resolution screen Higher resolution, same sizePhysicalWidth1.5 inches 1.5 inchesDotsPerInch(“dpi”)160240Pixels(=width*dpi)240360Density(factor of baseline 160)1.01.5Density-independent pixels 240240(“dip”or“dp”or“dps”)Scale-independent pixels (“sip”or“sp”)Depends on user font size settings same
Ponadto należy dobrze zrozumieć następujące pojęcia:
Rozmiar ekranu:
Rzeczywisty rozmiar fizyczny, mierzony jako przekątna ekranu. Dla uproszczenia system Android grupuje wszystkie rzeczywiste rozmiary ekranu na cztery ogólne rozmiary: mały, normalny, duży i bardzo duży.
Gęstość ekranu:
Ilość pikseli w fizycznym obszarze ekranu; zwykle określane jako dpi (kropki na cal). Na przykład ekran o „niskiej” gęstości ma mniej pikseli w danym obszarze fizycznym, w porównaniu do ekranu o „normalnej” lub „wysokiej” gęstości. Dla uproszczenia system Android grupuje wszystkie rzeczywiste gęstości ekranu na cztery ogólne gęstości: niska, średnia, wysoka i bardzo wysoka.
Orientacja:
Orientacja ekranu z punktu widzenia użytkownika. Jest to krajobraz lub portret, co oznacza, że proporcje ekranu są odpowiednio szerokie lub wysokie. Należy pamiętać, że nie tylko różne urządzenia domyślnie działają w różnych orientacjach, ale orientacja może się zmienić w czasie wykonywania, gdy użytkownik obraca urządzenie.
Rozkład:
Łączna liczba fizycznych pikseli na ekranie. Podczas dodawania obsługi wielu ekranów aplikacje nie działają bezpośrednio z rozdzielczością; aplikacje powinny dotyczyć wyłącznie rozmiaru i gęstości ekranu, określonych przez ogólne grupy wielkości 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 interfejsu użytkownika, w celu wyrażenia wymiarów lub położenia układu w sposób niezależny od gęstości. Piksel niezależny od gęstości odpowiada jednemu pikselowi fizycznemu na ekranie o rozdzielczości 160 dpi, który jest podstawową gęstością przyjętą przez system dla ekranu o „średniej” gęstości. W czasie wykonywania system w przejrzysty sposób obsługuje dowolne skalowanie jednostek dp, zależnie od rzeczywistej gęstości używanego ekranu. Konwersja jednostek dp na piksele ekranowe jest prosta: px = dp * (dpi / 160). Na przykład na ekranie o rozdzielczości 240 dpi 1 dp to 1,5 piksela fizycznego. Podczas definiowania interfejsu użytkownika aplikacji należy zawsze używać jednostek dp, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach o różnych gęstościach.
Czy to oznacza, że wszystko, co zaprojektujesz za pomocą jednostek dp, zawsze będzie zajmowało ten sam% ekranu, niezależnie od gęstości pikseli urządzenia? Zakładając identyczne proporcje obrazu.
DBIT,
198
dpjest dip. Używaj go do wszystkiego (margines, wypełnienie itp.).
Użyj tylko spdla {text-size}.
Aby uzyskać ten sam rozmiar przy różnych gęstościach ekranu, Android tłumaczy te jednostki na piksele w czasie wykonywania, więc nie ma trudnej matematyki.
Zobacz różnicę pomiędzy px, dporaz spw różnych rozmiarach ekranu.
Są to wartości wymiarów zdefiniowane w XML. Wymiar jest określony liczbą, po której następuje jednostka miary. Na przykład: 10 pikseli, 2 cale, 5sp. Android obsługuje następujące jednostki miary:
dp
Piksele niezależne od gęstości - jednostka abstrakcyjna oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi (punktów na cal), na którym 1dp jest z grubsza równy 1px. Podczas pracy na ekranie o większej gęstości liczba pikseli użytych do narysowania 1dp jest zwiększana o współczynnik odpowiedni dla rozdzielczości ekranu. Podobnie na ekranie o niższej gęstości liczba pikseli używanych do 1dp jest zmniejszana. Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Używanie jednostek dp (zamiast jednostek px) jest prostym rozwiązaniem, aby wymiary widoku w układzie były odpowiednio zmieniane dla różnych gęstości ekranu. Innymi słowy, zapewnia spójność rzeczywistych rozmiarów elementów interfejsu użytkownika na różnych urządzeniach.
sp. z oo
Piksele niezależne od skali - działa podobnie do jednostki dp, ale jest również skalowane według preferencji użytkownika dotyczących rozmiaru czcionki. Zaleca się korzystanie z tego urządzenia podczas określania rozmiarów czcionek, aby dopasować je zarówno do gęstości ekranu, jak i preferencji użytkownika.
pt
Punkty - 1/72 cala w oparciu o fizyczny rozmiar ekranu.
px
Piksele - odpowiada rzeczywistym pikselom na ekranie. Ta jednostka miary nie jest zalecana, ponieważ rzeczywista reprezentacja może się różnić w zależności od urządzenia; każde urządzenie może mieć inną liczbę pikseli na cal i może mieć większą lub mniejszą liczbę pikseli dostępnych na ekranie.
mm
Milimetry - w oparciu o fizyczny rozmiar ekranu.
w
Cale - w oparciu o fizyczny rozmiar ekranu.
Uwaga: Wymiar to prosty zasób, do którego można się odwoływać, używając wartości podanej w atrybucie name (a nie nazwie pliku XML). Jako takie, możesz łączyć zasoby wymiarów z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu.
Ponadto: jaka jest wartość dodana tej odpowiedzi? Wydaje się, że nic nie zostało wspomniane w innych odpowiedziach.
laalto
118
Zasadniczo jedynym momentem, w którym obowiązuje piksel, jest jeden piksel, a to znaczy, jeśli chcesz dokładnie jeden piksel na ekranie, jak w przypadku dzielnika:
getDimensionPixelOffset zaokrągla w dół, getDimensionPixelSize zaokrągla w górę.
Eugen Pechanec
101
px
Piksele - odpowiada rzeczywistym pikselom na ekranie.
dp lub dip
Piksele niezależne od gęstości - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi.
Zastosowanie dp:
Niezależność od gęstości - Twoja aplikacja osiąga „niezależność od gęstości”, gdy zachowuje fizyczny rozmiar (z punktu widzenia użytkownika) elementów interfejsu użytkownika, gdy są wyświetlane na ekranach o różnych gęstościach. (tj.) Obraz powinien wyglądać tego samego rozmiaru (nie powiększony ani pomniejszony) na różnych typach ekranów.
sp. z oo
Piksele niezależne od skali - jest to jak jednostka dp, ale jest również skalowane według preferencji użytkownika dotyczących rozmiaru czcionki.
Wirtualna jednostka pikseli, której należy używać podczas definiowania układu interfejsu użytkownika, w celu wyrażenia wymiarów lub położenia układu w sposób niezależny od gęstości. Jak opisano powyżej, piksel niezależny od gęstości jest równoważny jednemu pikselowi fizycznemu na ekranie o rozdzielczości 160 dpi, który jest podstawową gęstością przyjętą przez system dla ekranu o „średniej” gęstości. W czasie wykonywania system w przejrzysty sposób obsługuje dowolne skalowanie jednostek dp, zależnie od rzeczywistej gęstości używanego ekranu. Konwersja jednostek dp na piksele ekranowe jest prosta:
px = dp * (dpi / 160).
Na przykład na ekranie o rozdzielczości 240 dpi 1 dp to 1,5 piksela fizycznego. Podczas definiowania interfejsu użytkownika aplikacji należy zawsze używać jednostek dp, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach o różnych gęstościach.
Zrozumienie piksela do dp i odwrotnie jest bardzo istotne (szczególnie w celu podania dokładnych wartości dp zespołowi kreatywnemu)
dp = px *160/ dpi
MDPI =160 dpi ||Therefore, on MDPI 1 px =1 dp
For example,if you want to convert 20 pixel to dp,use the above formula,
dp =20*160/160=20.So,20 pixel =20 dp.
HDPI =240 dpi -So, on HDPI 1.5 px =1 dp
XHDPI =320 dpi -So, on XHDPI 2 px =1 dp
XXHDPI =480 dpi -So, on XXHDPI 3 px =1 dp
For example,let us consider Nexus4.If24 pixels to be converted to dp andif it is a Nexus4 screen, developers can
convert it to dp easily by the following calculation :
dp =24*160/320=12 dp
Screen dimension:768 x 1280 pixel resolution (320 ppi or320dpi)Optional(screen size):4.7" diagonal
Staraj się uzyskać wszystkie wartości pikseli w parzystych liczbach od zespołu kreatywnego. W przeciwnym razie nastąpi utrata precyzji podczas mnożenia przez 0,5.
px
Wyjaśniono to powyżej. Staraj się unikać w plikach układu. Ale są przypadki, w których wymagany jest px. na przykład linia podziału ListView. px jest tutaj lepszy, ponieważ podaje linię jednopikselową jako dzielnik dla wszystkich rozdzielczości ekranu.
sp. z oo
Użyj sp dla rozmiarów czcionek. Wtedy zmieni się tylko czcionka w aplikacji, a rozmiar czcionki urządzenia zmieni się (to znaczy Wyświetl -> Czcionki na urządzeniu). Jeśli chcesz zachować czcionkę o stałej wielkości wewnątrz aplikacji, możesz nadać jej wymiar w dp. W takim przypadku nigdy się to nie zmieni. Programiści mogą otrzymać takie wymaganie dla niektórych określonych ekranów, dlatego programiści mogą używać dp zamiast sp. We wszystkich innych przypadkach zaleca się sp.
Możesz zobaczyć różnicę pomiędzy pxi dpna poniższym obrazku, a także możesz stwierdzić, że pxi dpnie mogą zagwarantować takich samych fizycznych rozmiarów na różnych ekranach.
@EnesBattal, myślę, że ponieważ dp nie jest ostrym rozmiarem fizycznym, jest to wartość przybliżona. Cytując z CapTech: „dp - jest to jednostka niezależna od gęstości, jednak fizyczny rozmiar pojedynczego„ dp ”jest tylko w przybliżeniu taki sam na każdej gęstości ekranu. Istnieje około 160„ dp ”na cal. Współczynnik skalowania, w zależności od na kubku gęstości urządzenia, służy do konwersji „dp” na liczbę pikseli przy 160 dpi. Liczba pikseli, na którą przekłada się pojedynczy „dp”, zmienia się w zależności od piksela na gęstości ekranu i kubełka gęstości, na jaki spada urządzenie w."
Zephyr
3
@RuchirBaronia, myślę, że DP lub DIP wciąż są w apku, ponieważ apk nie wie, z jakim rodzajem gęstości ekranu będzie działał, więc należy zachować niezależność urządzenia.
Zephyr
79
Wszystko związane z rozmiarem tekstu i wyglądu musi zawierać splub pt. Podczas gdy wszystko związane z rozmiarem formantów, układów itp. Musi być używane z dp.
Dużo mówi się o używaniu „sp” do rozmiarów czcionek i choć doceniam tę kwestię, nie sądzę, aby było to właściwe z punktu widzenia projektowania. Możesz skończyć z zepsuciem swojego projektu, jeśli użytkownik ma trochę chybionego wyboru rozmiaru czcionki, a on ostatecznie obwinia aplikację , a nie własne wybory życiowe.
Ponadto, jeśli weźmiesz aplikację sp-font na tablecie 160 dpi, przekonasz się, że wszystko skaluje się ... ale twoja czcionka, która będzie wyglądać malutko w porównaniu. To nie jest dobry wygląd.
Chociaż pomysł na czcionki „sp” ma dobre serce, jest to kiepski pomysł. Trzymaj się dp na wszystko.
Wiesz, że zastosowany współczynnik skali czcionki spjest czynnikiem, prawda? Wpłynie to dprównież na wszystko, co wpływa sp. To powiedziawszy, nadal zaleca się określanie rozmiarów czcionek za pomocą dpzamiast, spjeśli układ jest bardzo ciasny, a większe rozmiary nie będą pasować - lepiej mieć tekst mniejszy niż to, czego użytkownik chce, aby całkowicie pomieszany układ. Ale w pierwszej kolejności należy zawsze starać się przestrzegać preferencji użytkownika dotyczących rozmiaru czcionki - nawet największe ustawienie nie jest TAKIE duże.
Karu
67
sp = piksel niezależny od skali
dp = dip = piksele niezależne od gęstości
dpi = kropki na cal
Powinniśmy unikać używania sp .
Powinniśmy używać dp do obsługi wielu ekranów.
Android obsługuje różne rozdzielczości ekranu
ldpi (niski) ~ 120 dpi
mdpi (średni) ~ 160 dpi
hdpi (wysoka) ~ 240 dpi
xhdpi (bardzo wysoka) ~ 320 dpi
xxhdpi (extra-extra-high) ~ 480 dpi
xxxhdpi (extra-extra-extra-high) ~ 640 dpi
Urządzenie ldpi 120 dp ma 120 pikseli w rozmiarze 1 cala.
To samo dotyczy innych gęstości ...
Jako inżynierowie oprogramowania powinniśmy zastosować tę formułę konwersji:
piksel = dp * (gęstość / 160)
Tak więc 1 dp 240 dpi urządzenia będzie miało = 1 * (240/160) = 3/2 = 1,5 piksela.
I 1 dpi urządzenia o rozdzielczości 480 dpi będzie miało = 1 * (480/160) = 3 piksele.
Korzystając z wiedzy o 1,5 i 3 pikselach, inżynier oprogramowania może zaprojektować układy dla różnych gęstości.
Aby sprawdzić parametry ekranu dowolnego urządzenia:
Odpowiedziałem w odniesieniu do perspektywy układu. Proszę przeczytać podany link „więc powinieneś używać tej jednostki miary przy definiowaniu rozmiaru tekstu (ale nigdy dla rozmiarów układu)”.
Kushal
Pytanie brzmiało: „Różnica między px, dp, dip i sp w Androidzie?” Twoja odpowiedź brzmiała: „Powinniśmy unikać używania sp”. Nigdzie nie było mowy o „perspektywie układu”.
ci_
Tak .. dp i dip są takie same ... używane zamiennie ... Czy moja odpowiedź rozwiązuje twoje zapytanie?
Kushal
61
Różnica pomiędzy dpi spjednostki wymienione jako „ font size preferencji użytkownika ” przez odpowiedzi skopiowane z oficjalnej dokumentacji można zaobserwować w czasie wykonywania przez zmianę Settings->Accessibility->Large Textopcji.
Large Textopcja wymusza, aby tekst 1.3był większy.
Rozmiar ekranu w Androidsą pogrupowane w kategorie small, medium, large, extra large, double-extrai triple-extra. Gęstość ekranu to liczba pikseli w obszarze (np. Cal) ekranu. Ogólnie mierzy się go w punktach na cal (dpi). Gęstość ekranu jest pogrupowana jako niska, średnia, wysoka i bardzo wysoka. Rozdzielczość to całkowita liczba pikseli na ekranie.
dp: Density Independent Pixel, zmienia się w zależności od gęstości ekranu. Na ekranie o rozdzielczości 160 dpi 1 dp = 1 piksel. Z wyjątkiem rozmiaru czcionki, zawsze używaj dp.
dip: dip == dp. We wcześniejszych wersjach Androida użyto dip, a później zmieniono na dp.
sp: Skala niezależnego piksela, skalowana na podstawie preferencji rozmiaru czcionki użytkownika. Czcionki powinny używać sp.
px: nasz zwykły standardowy piksel, który odwzorowuje piksel ekranowy.
w: cale, w odniesieniu do fizycznego rozmiaru ekranu.
mm: milimetry w stosunku do fizycznego rozmiaru ekranu.
pt: 1/72 cala, w odniesieniu do fizycznego rozmiaru ekranu.
Wzór na konwersję między jednostkami
px = dp *(dpi /160)
dp do px w urządzeniu
Poniższy przykład może pomóc lepiej zrozumieć. Skalowanie odbywa się na podstawie wielkości segmentu 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) i 640 (xxxhdpi). Proponowany przez Google współczynnik projektowania wynosi 3: 4: 6: 8: 12 dla ldpi: mdpi: hdpi: xhdpi: xxhdpi
Obraz X o wymiarach 150 x 150 pikseli będzie zajmował,
150 dp X 150 dp miejsca na ekranie w mdpi
100 dp X 100 dp miejsca na ekranie w HDpi
75 dp X 75 dp miejsca na ekranie w xhdpi
Możesz użyć następującego kalkulatora DPI, aby naprawić rozmiary obrazu i inne wymiary, jeśli chcesz mieć jednolity wygląd interfejsu użytkownika na wszystkich urządzeniach z Androidem.
Przeczytaj odpowiedź z wiki społeczności. Poniżej wymieniono niektóre informacje, które należy wziąć pod uwagę oprócz powyższych odpowiedzi. Większość programistów Androida tęskni za tym podczas tworzenia aplikacji, więc dodam te punkty.
sp = piksel niezależny od skali
dp = piksele niezależne od gęstości
dpi = gęstość pikseli
Przejrzałem powyższe odpowiedzi ... nie znajdując ich dokładnie poprawnych. sp dla rozmiaru tekstu, dp dla granic układu - standard. Ale sp dla rozmiaru tekstu spowoduje uszkodzenie układu, jeśli zostanie zastosowany nieostrożnie w większości urządzeń.
sp przyjmuje rozmiar tekstu urządzenia, podczas gdy dp przyjmuje standard gęstości urządzenia (nigdy nie zmienia się w urządzeniu) Powiedzmy, że tekst 100sp może zajmować 80% ekranu lub 100% ekranu, w zależności od rozmiaru czcionki ustawionego w urządzeniu
Możesz również używać sp do obwiedni układu, to zadziała :)
Żadna standardowa aplikacja nie używa sp dla całego tekstu
Użyj sp i dp dla rozmiaru tekstu z uwzględnieniem UX.
Nie używaj sp dla tekstu na pasku narzędzi (można używać wymiarów Androida dostępnych dla różnych rozmiarów ekranu z dp)
Nie używaj sp dla tekstu w małych ograniczonych przyciskach, bardzo mniejszym tekście itp
Niektóre osoby używają w telefonie ogromnego rozmiaru FONT-a, aby zwiększyć jego czytelność, co oznacza, że tekst o małych rozmiarach na stałe będzie problemem UX. W razie potrzeby umieść sp dla tekstu, ale upewnij się, że nie złamie układu, gdy użytkownik zmieni swoje ustawienia.
Podobnie, jeśli masz jedną aplikację obsługującą wszystkie wymiary, dodanie zasobów xxxhdpi znacznie zwiększa rozmiar aplikacji. Ale teraz telefony xxxhdpi są powszechne, więc musimy uwzględnić zasoby xxxhdpi co najmniej dla ikon na pasku bocznym, pasku narzędzi i pasku dolnym. Lepiej jest przejść do obrazów wektorowych, aby uzyskać jednolity obraz o lepszej jakości dla wszystkich rozmiarów ekranu.
Pamiętaj też, że ludzie używają niestandardowych czcionek w swoich telefonach. Tak więc brak czcionki może powodować problemy dotyczące odstępów i tak dalej. Powiedz, że rozmiar czcionki 12sp dla niestandardowej czcionki może zająć kilka pikseli więcej niż czcionka domyślna.
Natknąłem się na dobry artykuł na temat projektowania interfejsu aplikacji na Androida dla różnych rozdzielczości ekranu i chciałbym zostawić go tutaj tylko dla osób szukających w tym obszarze. Tak, wiem, że jest to jakoś opisane w dokumentach Google (i wspomniane w powyższych postach), przeczytałem to, ale to nie było dla mnie dobre (tak, mogę być zbyt głupi)). Nie było dla mnie jasne, jak zaprojektować układy obsługujące ekran o różnej wielkości. Nienawidzę koncepcji DP i tak dalej, kiedy muszę zaimplementować „elastyczny” układ interfejsu dla różnych ekranów. (Cześć programiści iOS - tak, masz rację, to koncepcja Storyboard).
Android nie ma złej koncepcji interfejsu użytkownika, ale niestety nie ma funkcji iOS Storyboard. Projektowanie elastycznego interfejsu użytkownika w systemie Android nie jest łatwe (w najlepszym wypadku).
Oto artykuł, który pomógł mi zrozumieć, co robić w Androidzie, aby tworzyć układy dla różnych rozmiarów ekranu:
Jak zaprojektować interfejs użytkownika dla aplikacji na Androida dla różnych rozmiarów ekranu
Aby zaprojektować interfejs aplikacji dla różnych rozmiarów ekranu, nasz początkowy projekt musi spełniać minimalną wymaganą przestrzeń dla każdego rozmiaru ekranu. Android określa minimalny rozmiar (w dp) dla każdego uogólnionego typu ekranu. Oto wytyczne dotyczące wielkości ekranu Androida.
Gdy otrzymamy rozmiar ekranu w dp, nie wystarczy nam zaprojektować interfejs aplikacji na Androida. Dla każdego rozmiaru ekranu musimy przygotować grafikę i obrazy bitmapowe dla każdej gęstości. Oto wytyczne dotyczące gęstości ekranu Androida.
Aby ułatwić obliczenia, możemy zastosować współczynnik skalowania 3: 4: 6: 8 między czterema uogólnionymi gęstościami. Jeśli utworzymy obraz 36 × 36 pikseli dla urządzenia ldpi, rozmiar pozostałych zdjęć gęstości będzie wynosił 48 × 48 dla mdpi, 72 × 72 dla hdpi i 96 × 96 dla xhdpi.
Jak zaprojektować interfejs aplikacji Android w Photoshopie
Wielu projektantów ma problemy z projektowaniem interfejsu aplikacji na Androida w Photoshopie lub innych narzędziach do projektowania graficznego opartego na pikselach z powodu jednostki niezależnej od gęstości, dp. Projektanci nie wiedzą, jak zamapować dp na piksele. Google nie podaje też dla nich jasnego przewodnika po projektowaniu interfejsu użytkownika Androida, chociaż podaje podstawową formułę translacji dp i pikseli.
Zgodnie z definicją Androida, 1pd równa się 1px poniżej 160 dpi urządzenia (mdpi). Dlatego chcemy zaprojektować aplikację dla systemu Android na duże urządzenie z gęstością mdpi, możemy zdefiniować rozmiar interfejsu użytkownika w pikselach jako 960 pikseli szerokości i 720 pikseli wysokości; Postępuj zgodnie z tą samą zasadą mapowania, możemy uzyskać następujące wytyczne projektowania interfejsu użytkownika w rozmiarze ekranu aplikacji na Androida:
ADDED2 Google w końcu zrozumiał użyteczność koncepcji interfejsu użytkownika iOS Storeboard, a oto ConstraintLayoutświat Androida: Zbuduj responsywny interfejs użytkownika za pomocą ConstraintLayout
Liczba pikseli reprezentowanych w jednej jednostce dp wzrośnie wraz ze wzrostem rozdzielczości ekranu (gdy będzie więcej kropek / pikseli na cal). I odwrotnie, na urządzeniach o niższej rozdzielczości liczba pikseli w jednostce dp zmniejszy się. Ponieważ jest to jednostka względna, musi mieć linię bazową do porównania. Ta linia bazowa to ekran o rozdzielczości 160 dpi. To jest równanie:px = dp * (dpi / 160).
2) sp: (scale independent pixels)
To urządzenie skaluje się zgodnie z rozdzielczością ekranu (podobną do dp), a także preferencjami użytkownika dotyczącymi rozmiaru czcionki.
Rozmiar ekranu w Androidzie są pogrupowane w kategorie ldpi, mdpi, hdpi, xhdpi, xxhdpii xxxhdpi. Gęstość ekranu to liczba pikseli w obszarze (np. Cal) ekranu. Zasadniczo jest mierzony w punktach na cal ( dpi).
PX(Pixels):
nasz zwykły standardowy piksel, który odwzorowuje piksel ekranowy. pxjest przeznaczony dla pikseli bezwzględnych. Jest to używane, jeśli chcesz podać w kategoriach bezwzględnych pikseli szerokości lub wysokości. Niepolecane.
DP/DIP(Density pixels / Density independent pixels):
dip == dp. We wcześniejszych wersjach Androida użyto dip, a później zmieniono na dp. To jest alternatywa dla px.
Zasadniczo nigdy nie używamy, pxponieważ jest to wartość bezwzględna. Jeśli użyjesz pxdo ustawienia szerokości lub wysokości i jeśli aplikacja jest pobierana na urządzenia o różnych rozmiarach ekranu, widok ten nie będzie rozciągał się jak w oryginalnym rozmiarze ekranu.
dpzaleca się stosowanie zamiast px. Użyj, dpjeśli chcesz wspomnieć o szerokości i wysokości, aby dynamicznie rosnąć i kurczyć się w zależności od rozmiarów ekranu.
jeśli damy dp/dip, Android automatycznie obliczy rozmiar piksela na podstawie ekranu o rozmiarze 160 pikseli.
SP(Scale independent pixels):
skalowane na podstawie preferencji użytkownika dotyczących rozmiaru czcionki. Czcionki powinny używać sp.
gdy wspominasz o rozmiarach czcionek pasujących do różnych rozmiarów ekranu, użyj sp. Jest to podobne do dp.Używaj spszczególnie, aby rozmiary czcionek dynamicznie rosły i zmniejszały się w zależności od rozmiarów ekranu
Dokumentacja Androida mówi:
przy określaniu wymiarów zawsze używaj jednego z nich dplub spjednostek. A dpto piksel niezależny od gęstości, który odpowiada rozmiarowi fizycznemu piksela przy 160 dpi. Jest spto ta sama jednostka podstawowa, ale jest skalowana według preferowanego przez użytkownika rozmiaru tekstu (jest to piksel niezależny od skali), dlatego należy używać tej jednostki miary podczas definiowania rozmiaru tekstu
Ekran telefonu komórkowego składa się z tysięcy małych kropek zwanych pikselami (px) . Piksel to najmniejszy element, który tworzy zdjęcie. Im większa liczba pikseli do zrobienia zdjęcia lub sformułowania, tym ostrzejsza staje się i sprawia, że ekran smartfona jest bardziej czytelny.
Rozdzielczość ekranu mierzy się liczbą pikseli na ekranie. Rozdzielczość ekranu jest często stosowaną specyfikacją przy zakupie urządzenia, ale w rzeczywistości nie jest tak przydatna podczas projektowania dla Androida, ponieważ myślenie o ekranach w kategoriach pikseli ignoruje pojęcie rozmiaru fizycznego, co dla urządzenia dotykowego jest naprawdę bardzo ważne.
Piksel niezależny od gęstości (dp lub dip) pozwala projektantowi tworzyć zasoby, które pojawiają się w oczekiwany sposób, bez względu na rozdzielczość lub gęstość urządzenia docelowego.
Piksel niezależny od gęstości (dp lub dip) jest równy jednemu pikselowi przy gęstości podstawowej lub 160 dpi (kropki na cal).
1 px / 1dp = 160 dpi / 160 dpi
2 piksele / 1dp = 320 dpi (2x) / 160 dpi
gdzie,
dpi to liczba punktów na cal
Tak więc przy 320 dpi 1 dp to 2 piksele.
Formuła
px / dp = dpi / 160dpi
Kropki na cal (dpi) to miara ostrości (to znaczy gęstości podświetlonych punktów) na ekranie wyświetlacza. Kropki na cal dla danej rozdzielczości obrazu będą się różnić w zależności od ogólnego rozmiaru ekranu, ponieważ ta sama liczba pikseli jest rozmieszczona na innym obszarze.
Praca z pikselami niezależnymi od gęstości pomaga nam uporać się z sytuacją, w której masz dwa urządzenia o tej samej rozdzielczości pikseli, ale z różną ilością miejsca. Załóżmy, że w przypadku tablet i telefon mają tę samą rozdzielczość pikseli odpowiednio 1280 na 800 pikseli (160 dpi) i 800 na 1280 pikseli (320 dpi).
Ponieważ tablet ma podstawową gęstość (160 dpi), jego rozmiary fizyczne i niezależne od gęstości są takie same, 1280 x 800. Z drugiej strony telefon ma większą gęstość pikseli, więc ma o połowę mniej pikseli niezależnych od gęstości piksele. Telefon ma więc piksele niezależne od gęstości 400 na 640. Dlatego użycie piksela niezależnego od gęstości ułatwia wyobrażenie sobie, że tablet ma znacznie więcej miejsca niż telefon.
Podobnie, jeśli masz dwa urządzenia o podobnym rozmiarze ekranu, ale o różnej gęstości pikseli, powiedzmy, że jedno ma rozdzielczość 800 x 1280 pikseli (320 dpi), a drugie 400 x 640 pikseli (160 dpi), nie musimy definiować całkowicie różne układy dla tych dwóch urządzeń, ponieważ możemy mierzyć zasoby pod względem pikseli niezależnych od gęstości, które są takie same dla obu urządzeń.
800 na 1280 pikseli (320dpi) = 400 na 640 pikseli niezależnych od gęstości (dp)
400 na 640 pikseli (160 dpi) = 400 na 640 pikseli niezależny od gęstości (dp)
Rozdzielczość niezależna od skali (sp) jest preferowaną jednostką wielkości czcionki. W celu ułatwienia dostępu, Android pozwala użytkownikom dostosować rozmiar czcionki w urządzeniu. Użytkownicy, którzy mają problemy z odczytaniem tekstu, mogą zwiększyć rozmiar czcionki swojego urządzenia. Zazwyczaj tę opcję można znaleźć w ustawieniach wyświetlania w telefonie lub tablecie poniżej rozmiaru czcionki. Często jest również dostępny w ustawieniach dostępności.
Przy pikselach niezależnych od skali, 16 sp jest dokładnie takie samo jak 16 dp, gdy rozmiar czcionki urządzenia jest normalny lub 100%. Ale gdy rozmiar czcionki urządzenia jest duży, na przykład 125%, 16 sp przełoży się na 20 dp lub 1,25 razy 16.
Jeśli użyjesz dp jako jednostki rozmiaru czcionki, to ten fragment tekstu ma określony rozmiar fizyczny, bez względu na to, czy użytkownik dostosował rozmiar czcionki urządzenia. Używanie jednostek SP zapewni lepsze wrażenia osobom z upośledzeniem wzroku.
Gęstość pikseli ekranu i rozdzielczość różnią się w zależności od platformy. Piksele niezależne od urządzenia i piksele skalowalne to jednostki, które zapewniają elastyczny sposób na dostosowanie projektu do różnych platform.
Obliczanie gęstości pikseli
Liczba pikseli pasujących do cala jest określana jako gęstość pikseli. Ekrany o wysokiej gęstości mają więcej pikseli na cal niż te o niskiej gęstości ....
Liczba pikseli pasujących do cala jest określana jako gęstość pikseli. Ekrany o wysokiej gęstości mają więcej pikseli na cal niż te o niskiej gęstości. W rezultacie elementy interfejsu użytkownika o tych samych wymiarach pikseli wydają się większe na ekranach o niskiej gęstości, a mniejsze na ekranach o wysokiej gęstości.
Aby obliczyć gęstość ekranu, możesz użyć tego równania:
Gęstość ekranu = szerokość (lub wysokość) ekranu w pikselach / szerokość (lub wysokość) ekranu w calach
Niezależność od gęstości
Gęstość pikseli ekranu i rozdzielczość różnią się w zależności od platformy. Piksele niezależne od urządzenia i piksele skalowalne to jednostki, które zapewniają elastyczny sposób na dostosowanie projektu do różnych platform.
Obliczanie gęstości pikseli Liczba pikseli, które mieszczą się w calach, nazywana jest gęstością pikseli . Ekrany o wysokiej gęstości mają więcej pikseli na cal niż te o niskiej gęstości ....
Niezależność od gęstości odnosi się do jednolitego wyświetlania elementów interfejsu użytkownika na ekranach o różnych gęstościach.
Piksele niezależne od gęstości , zapisane jako dp (wymawiane jako „ spadki ”), są elastycznymi jednostkami, które skalują się, aby mieć jednolite wymiary na dowolnym ekranie. Interfejsy użytkownika materiałów używają pikseli niezależnych od gęstości do spójnego wyświetlania elementów na ekranach o różnej gęstości.
Wyświetlany ekran o niskiej gęstości z niezależnością od gęstości
Ekran o wysokiej gęstości wyświetlany z niezależnością od gęstości
Piksele (px) - odpowiadają rzeczywistym pikselom na ekranie. Jest to używane, jeśli chcesz podać w kategoriach bezwzględnych pikseli szerokości lub wysokości.
Piksele niezależne od gęstości (dp lub dip) - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Uwaga: Kompilator akceptuje zarówno „dip”, jak i „dp”, chociaż „dp” jest bardziej spójny z „sp”.
Pikale niezależne od skali (sp) - to jest jak jednostka dp, ale jest również skalowane przez preferencje użytkownika dotyczące rozmiaru czcionki. Zaleca się korzystanie z tego urządzenia podczas określania rozmiarów czcionek, aby dopasować je zarówno do gęstości ekranu, jak i preferencji użytkownika.
Chcę zapewnić łatwy sposób zrozumienia dp. Myślę, że dpnajłatwiej to zrozumieć. dpjest tylko jednostką długości fizycznej. Ma ten sam wymiar co mmlub inch. To jest po prostu wygodne dla nas napisać 50dp, 60dpa nie 50/160 inchczy 60/160 inch, bo jeden dpjest tylko 1/160 inchniezależnie od wielkości ekranu lub rozdzielczość to.
Jedynym problemem jest to, że rozdzielczość dpi niektórych ekranów w systemie Android nie jest dokładna. Na przykład ekran sklasyfikowany jako 160dpi może rzeczywiście mieć 170dpi. Tak więc wynik obliczeń dpjest rozmyty. Powinien być mniej więcej taki sam jak 1/160 inch.
px
,dp
isp
Odpowiedzi:
Z dokumentacji dla programistów Androida :
Od zrozumienia niezależności gęstości w Androidzie :
Więcej informacji można również znaleźć w Dokumentacji projektowej Google .
źródło
dp
ma nie mieć dokładnie taką samą długość fizyczną. (Chociaż jest blisko.) Zobacz komentarz @ Fraggle na temat wiaderka. Oznacza to, że 48dp będzie wynosić około 8 mm (0,3 cala), ale może różnić się do 11 mm.Prawie wszystko na ten temat i jak osiągnąć najlepszą obsługę wielu ekranów o różnych rozmiarach i gęstościach jest bardzo dobrze udokumentowane tutaj:
Jeśli poważnie myślisz o opracowaniu aplikacji na Androida dla więcej niż jednego typu urządzenia, powinieneś przeczytać dokument dotyczący programowania rozwoju przynajmniej raz. Ponadto zawsze dobrze jest znać rzeczywistą liczbę aktywnych urządzeń, które mają określoną konfigurację ekranu.
źródło
Omówię dokładniej, w jaki sposób dp konwertuje dp na px:
150 x 150 px
obraz zajmie miejsce150 * 150 dp
na ekranie.150 x 150 px
obraz zajmie miejsce100 * 100 dp
na ekranie.150x150 px
obraz zajmie miejsce75 * 75 dp
na ekranie.Odwrotnie: powiedz, że chcesz dodać obraz do swojej aplikacji i potrzebujesz go do wypełnienia
100 * 100 dp
formantu. Musisz utworzyć obrazy o różnych rozmiarach dla obsługiwanych rozmiarów ekranu:100 * 100 px
obraz dla mdpi150 * 150 px
obraz do hdpi200 * 200 px
obraz dla xhdpiźródło
px - Piksele - punkt na skalę odpowiada rzeczywistej liczbie pikseli na ekranie.
i - Cale - w oparciu o fizyczny rozmiar ekranu.
mm - Milimetry - w oparciu o fizyczny rozmiar ekranu.
pt - Punkty - 1/72 cala w oparciu o fizyczny rozmiar ekranu.
dp - Piksele niezależne od gęstości - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc
dp
jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Uwaga: Kompilator akceptuje zarównodip
idp
, choćdp
jest bardziej zgodne zsp
.sp - Piksele niezależne od skali - jest to jak
dp
jednostka, ale jest również skalowane według preferencji użytkownika dotyczących rozmiaru czcionki. Zaleca się korzystanie z tego urządzenia podczas określania rozmiarów czcionek, aby dopasować je zarówno do gęstości ekranu, jak i preferencji użytkownika.Weźmy przykład dwóch ekranów, które są tego samego rozmiaru, ale jeden ma gęstość ekranu 160 dpi (kropki na cal, tj. Piksele na cal), a drugi to 240 dpi.
źródło
Ponadto należy dobrze zrozumieć następujące pojęcia:
Rozmiar ekranu:
Gęstość ekranu:
Orientacja:
Rozkład:
Piksel niezależny od gęstości (dp):
Odniesienie: strona dla programistów Androida
źródło
dp
jestdip
. Używaj go do wszystkiego (margines, wypełnienie itp.).Użyj tylko
sp
dla {text-size}.Aby uzyskać ten sam rozmiar przy różnych gęstościach ekranu, Android tłumaczy te jednostki na piksele w czasie wykonywania, więc nie ma trudnej matematyki.
Zobacz różnicę pomiędzy
px
,dp
orazsp
w różnych rozmiarach ekranu.Źródło: Programowanie na Androida: Przewodnik po The Big Nerd Ranch
źródło
Obliczyłem poniższy wzór, aby wykonać konwersje
dpi
dodp
isp
źródło
Definicje
px lub kropka to piksel na ekranie fizycznym.
dpi to piksele na cal na ekranie fizycznym i reprezentują gęstość wyświetlacza.
Android nadaje nazwy aliasów kilku gęstościom
dip lub dp są pikselami niezależnymi od gęstości , tzn. odpowiadają większej lub mniejszej liczbie pikseli w zależności od gęstości fizycznej.
sp lub sip to piksel niezależny od skali . Są skalowane, gdy opcja Duży tekst jest włączona w Settings>Accessibility
Czego używać?
źródło
Źródło 1
Źródło 2
Źródło 3 : (dane ze źródła 3 podano poniżej)
Uwaga: Wymiar to prosty zasób, do którego można się odwoływać, używając wartości podanej w atrybucie name (a nie nazwie pliku XML). Jako takie, możesz łączyć zasoby wymiarów z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu.
źródło
Zasadniczo jedynym momentem, w którym obowiązuje piksel, jest jeden piksel, a to znaczy, jeśli chcesz dokładnie jeden piksel na ekranie, jak w przypadku dzielnika:
Przy> 160 dpi możesz uzyskać 2-3 piksele,
Przy> 120 dpi zaokrągla do 0.
źródło
px
Piksele - odpowiada rzeczywistym pikselom na ekranie.
dp lub dip
Piksele niezależne od gęstości - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi.
Zastosowanie dp:
Niezależność od gęstości - Twoja aplikacja osiąga „niezależność od gęstości”, gdy zachowuje fizyczny rozmiar (z punktu widzenia użytkownika) elementów interfejsu użytkownika, gdy są wyświetlane na ekranach o różnych gęstościach. (tj.) Obraz powinien wyglądać tego samego rozmiaru (nie powiększony ani pomniejszony) na różnych typach ekranów.
sp. z oo
Piksele niezależne od skali - jest to jak jednostka dp, ale jest również skalowane według preferencji użytkownika dotyczących rozmiaru czcionki.
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
źródło
Gdzie stosować co i związek między px i dp?
Piksel niezależny od gęstości (dp)
Wirtualna jednostka pikseli, której należy używać podczas definiowania układu interfejsu użytkownika, w celu wyrażenia wymiarów lub położenia układu w sposób niezależny od gęstości. Jak opisano powyżej, piksel niezależny od gęstości jest równoważny jednemu pikselowi fizycznemu na ekranie o rozdzielczości 160 dpi, który jest podstawową gęstością przyjętą przez system dla ekranu o „średniej” gęstości. W czasie wykonywania system w przejrzysty sposób obsługuje dowolne skalowanie jednostek dp, zależnie od rzeczywistej gęstości używanego ekranu. Konwersja jednostek dp na piksele ekranowe jest prosta:
px = dp * (dpi / 160).
Na przykład na ekranie o rozdzielczości 240 dpi 1 dp to 1,5 piksela fizycznego. Podczas definiowania interfejsu użytkownika aplikacji należy zawsze używać jednostek dp, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach o różnych gęstościach.
Zrozumienie piksela do dp i odwrotnie jest bardzo istotne (szczególnie w celu podania dokładnych wartości dp zespołowi kreatywnemu)
px
Wyjaśniono to powyżej. Staraj się unikać w plikach układu. Ale są przypadki, w których wymagany jest px. na przykład linia podziału ListView. px jest tutaj lepszy, ponieważ podaje linię jednopikselową jako dzielnik dla wszystkich rozdzielczości ekranu.
sp. z oo
Użyj sp dla rozmiarów czcionek. Wtedy zmieni się tylko czcionka w aplikacji, a rozmiar czcionki urządzenia zmieni się (to znaczy Wyświetl -> Czcionki na urządzeniu). Jeśli chcesz zachować czcionkę o stałej wielkości wewnątrz aplikacji, możesz nadać jej wymiar w dp. W takim przypadku nigdy się to nie zmieni. Programiści mogą otrzymać takie wymaganie dla niektórych określonych ekranów, dlatego programiści mogą używać dp zamiast sp. We wszystkich innych przypadkach zaleca się sp.
źródło
Możesz zobaczyć różnicę pomiędzy
px
idp
na poniższym obrazku, a także możesz stwierdzić, żepx
idp
nie mogą zagwarantować takich samych fizycznych rozmiarów na różnych ekranach.źródło
Wszystko związane z rozmiarem tekstu i wyglądu musi zawierać
sp
lubpt
. Podczas gdy wszystko związane z rozmiarem formantów, układów itp. Musi być używane zdp
.Możesz używać obu
dp
idip
na jego miejscach.źródło
Używałbym tylko dp.
Dużo mówi się o używaniu „sp” do rozmiarów czcionek i choć doceniam tę kwestię, nie sądzę, aby było to właściwe z punktu widzenia projektowania. Możesz skończyć z zepsuciem swojego projektu, jeśli użytkownik ma trochę chybionego wyboru rozmiaru czcionki, a on ostatecznie obwinia aplikację , a nie własne wybory życiowe.
Ponadto, jeśli weźmiesz aplikację sp-font na tablecie 160 dpi, przekonasz się, że wszystko skaluje się ... ale twoja czcionka, która będzie wyglądać malutko w porównaniu. To nie jest dobry wygląd.
Chociaż pomysł na czcionki „sp” ma dobre serce, jest to kiepski pomysł. Trzymaj się dp na wszystko.
źródło
sp
jest czynnikiem, prawda? Wpłynie todp
również na wszystko, co wpływasp
. To powiedziawszy, nadal zaleca się określanie rozmiarów czcionek za pomocądp
zamiast,sp
jeśli układ jest bardzo ciasny, a większe rozmiary nie będą pasować - lepiej mieć tekst mniejszy niż to, czego użytkownik chce, aby całkowicie pomieszany układ. Ale w pierwszej kolejności należy zawsze starać się przestrzegać preferencji użytkownika dotyczących rozmiaru czcionki - nawet największe ustawienie nie jest TAKIE duże.sp = piksel niezależny od skali
dp = dip = piksele niezależne od gęstości
dpi = kropki na cal
Android obsługuje różne rozdzielczości ekranu
Urządzenie ldpi 120 dp ma 120 pikseli w rozmiarze 1 cala.
To samo dotyczy innych gęstości ...
Jako inżynierowie oprogramowania powinniśmy zastosować tę formułę konwersji:
Tak więc 1 dp 240 dpi urządzenia będzie miało = 1 * (240/160) = 3/2 = 1,5 piksela.
I 1 dpi urządzenia o rozdzielczości 480 dpi będzie miało = 1 * (480/160) = 3 piksele.
Korzystając z wiedzy o 1,5 i 3 pikselach, inżynier oprogramowania może zaprojektować układy dla różnych gęstości.
Aby sprawdzić parametry ekranu dowolnego urządzenia:
źródło
Różnica pomiędzy
dp
isp
jednostki wymienione jako „ font size preferencji użytkownika ” przez odpowiedzi skopiowane z oficjalnej dokumentacji można zaobserwować w czasie wykonywania przez zmianęSettings->Accessibility->Large Text
opcji.Large Text
opcja wymusza, aby tekst1.3
był większy.Oczywiście może to zależeć od dostawcy, ponieważ leży w pakietach / aplikacjach / ustawieniach .
źródło
dpi -
px - piksel
pt - punkty
cale - w odniesieniu do fizycznego rozmiaru ekranu (1 cal = 2,54 cm).
mm - milimetr - w odniesieniu do fizycznego rozmiaru ekranu.
sp - piksel niezależny od skali.
dip -
Standardowo stosowane są dp i sp. sp dla rozmiaru czcionki i dp dla wszystkiego innego.
Wzór na przeliczenie jednostek:
źródło
Oto formuła używana przez Androida:
Gdzie dpi jest jedną z następujących gęstości ekranu. Lista wszystkich możliwych gęstości znajduje się tutaj
Definiuje stałe „DENSITY_ *”.
Zabrano stąd .
To rozwiąże wiele nieporozumień podczas tłumaczenia między px i dp, jeśli znasz rozdzielczość ekranu.
Powiedzmy, że chcesz obrazu o rozdzielczości 60 dp dla ekranu hdpi, wówczas fizyczny rozmiar piksela 60 dp to:
źródło
Rozmiar ekranu w
Android
są pogrupowane w kategoriesmall
,medium
,large
,extra large
,double-extra
itriple-extra
. Gęstość ekranu to liczba pikseli w obszarze (np. Cal) ekranu. Ogólnie mierzy się go w punktach na cal (dpi). Gęstość ekranu jest pogrupowana jako niska, średnia, wysoka i bardzo wysoka. Rozdzielczość to całkowita liczba pikseli na ekranie.Wzór na konwersję między jednostkami
dp do px w urządzeniu
Poniższy przykład może pomóc lepiej zrozumieć. Skalowanie odbywa się na podstawie wielkości segmentu 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) i 640 (xxxhdpi). Proponowany przez Google współczynnik projektowania wynosi 3: 4: 6: 8: 12 dla ldpi: mdpi: hdpi: xhdpi: xxhdpi
Obraz X o wymiarach 150 x 150 pikseli będzie zajmował,
Możesz użyć następującego kalkulatora DPI, aby naprawić rozmiary obrazu i inne wymiary, jeśli chcesz mieć jednolity wygląd interfejsu użytkownika na wszystkich urządzeniach z Androidem.
Kalkulator DPI w Javie
Więcej informacji można znaleźć pod poniższym linkiem.
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
źródło
Przeczytaj odpowiedź z wiki społeczności. Poniżej wymieniono niektóre informacje, które należy wziąć pod uwagę oprócz powyższych odpowiedzi. Większość programistów Androida tęskni za tym podczas tworzenia aplikacji, więc dodam te punkty.
sp = piksel niezależny od skali
dp = piksele niezależne od gęstości
dpi = gęstość pikseli
Przejrzałem powyższe odpowiedzi ... nie znajdując ich dokładnie poprawnych. sp dla rozmiaru tekstu, dp dla granic układu - standard. Ale sp dla rozmiaru tekstu spowoduje uszkodzenie układu, jeśli zostanie zastosowany nieostrożnie w większości urządzeń.
sp przyjmuje rozmiar tekstu urządzenia, podczas gdy dp przyjmuje standard gęstości urządzenia (nigdy nie zmienia się w urządzeniu) Powiedzmy, że tekst 100sp może zajmować 80% ekranu lub 100% ekranu, w zależności od rozmiaru czcionki ustawionego w urządzeniu
Możesz również używać sp do obwiedni układu, to zadziała :) Żadna standardowa aplikacja nie używa sp dla całego tekstu
Użyj sp i dp dla rozmiaru tekstu z uwzględnieniem UX.
Niektóre osoby używają w telefonie ogromnego rozmiaru FONT-a, aby zwiększyć jego czytelność, co oznacza, że tekst o małych rozmiarach na stałe będzie problemem UX. W razie potrzeby umieść sp dla tekstu, ale upewnij się, że nie złamie układu, gdy użytkownik zmieni swoje ustawienia.
Podobnie, jeśli masz jedną aplikację obsługującą wszystkie wymiary, dodanie zasobów xxxhdpi znacznie zwiększa rozmiar aplikacji. Ale teraz telefony xxxhdpi są powszechne, więc musimy uwzględnić zasoby xxxhdpi co najmniej dla ikon na pasku bocznym, pasku narzędzi i pasku dolnym. Lepiej jest przejść do obrazów wektorowych, aby uzyskać jednolity obraz o lepszej jakości dla wszystkich rozmiarów ekranu.
Pamiętaj też, że ludzie używają niestandardowych czcionek w swoich telefonach. Tak więc brak czcionki może powodować problemy dotyczące odstępów i tak dalej. Powiedz, że rozmiar czcionki 12sp dla niestandardowej czcionki może zająć kilka pikseli więcej niż czcionka domyślna.
Zapoznaj się z witryną programistów Google, aby zapoznać się ze szczegółami i szczegółami dotyczącymi systemu Android. https://developer.android.com/training/multiscreen/screendensities
źródło
Zwykle dla rozmiarów czcionek stosuje się sp, podczas gdy dla innych stosuje się dip (zwany również dp).
źródło
Natknąłem się na dobry artykuł na temat projektowania interfejsu aplikacji na Androida dla różnych rozdzielczości ekranu i chciałbym zostawić go tutaj tylko dla osób szukających w tym obszarze. Tak, wiem, że jest to jakoś opisane w dokumentach Google (i wspomniane w powyższych postach), przeczytałem to, ale to nie było dla mnie dobre (tak, mogę być zbyt głupi)). Nie było dla mnie jasne, jak zaprojektować układy obsługujące ekran o różnej wielkości. Nienawidzę koncepcji DP i tak dalej, kiedy muszę zaimplementować „elastyczny” układ interfejsu dla różnych ekranów. (Cześć programiści iOS - tak, masz rację, to koncepcja Storyboard).
Android nie ma złej koncepcji interfejsu użytkownika, ale niestety nie ma funkcji iOS Storyboard. Projektowanie elastycznego interfejsu użytkownika w systemie Android nie jest łatwe (w najlepszym wypadku).
Oto artykuł, który pomógł mi zrozumieć, co robić w Androidzie, aby tworzyć układy dla różnych rozmiarów ekranu:
Blog JMSTUDIO: - Wybierz rozmiar ekranu aplikacji na Androida
DODANO : Jeśli interesuje Cię również „elastyczny” interfejs użytkownika, spójrz na tę bibliotekę: Android SDK, który zapewnia nową jednostkę wielkości - sdp (skalowalny dp). Ta jednostka rozmiaru skaluje się wraz z rozmiarem ekranu (wspomniano również w odpowiedzi tutaj o
SDP
bibliotece)ADDED2 Google w końcu zrozumiał użyteczność koncepcji interfejsu użytkownika iOS Storeboard, a oto
ConstraintLayout
świat Androida: Zbuduj responsywny interfejs użytkownika za pomocą ConstraintLayoutźródło
1)
dp: (density independent pixels)
Liczba pikseli reprezentowanych w jednej jednostce dp wzrośnie wraz ze wzrostem rozdzielczości ekranu (gdy będzie więcej kropek / pikseli na cal). I odwrotnie, na urządzeniach o niższej rozdzielczości liczba pikseli w jednostce dp zmniejszy się. Ponieważ jest to jednostka względna, musi mieć linię bazową do porównania. Ta linia bazowa to ekran o rozdzielczości 160 dpi. To jest równanie:
px = dp * (dpi / 160).
2)
sp: (scale independent pixels)
To urządzenie skaluje się zgodnie z rozdzielczością ekranu (podobną do dp), a także preferencjami użytkownika dotyczącymi rozmiaru czcionki.
3)
px: (pixels)
Rzeczywiste piksele lub kropki na ekranie.
Aby uzyskać więcej informacji, możesz odwiedzić
źródło
Rozmiar ekranu w Androidzie są pogrupowane w kategorie
ldpi
,mdpi
,hdpi
,xhdpi
,xxhdpi
ixxxhdpi
. Gęstość ekranu to liczba pikseli w obszarze (np. Cal) ekranu. Zasadniczo jest mierzony w punktach na cal (dpi
).PX(Pixels):
px
jest przeznaczony dla pikseli bezwzględnych. Jest to używane, jeśli chcesz podać w kategoriach bezwzględnych pikseli szerokości lub wysokości. Niepolecane.DP/DIP(Density pixels / Density independent pixels):
dip == dp
. We wcześniejszych wersjach Androida użyto dip, a później zmieniono nadp
. To jest alternatywa dlapx
.Zasadniczo nigdy nie używamy,
px
ponieważ jest to wartość bezwzględna. Jeśli użyjeszpx
do ustawienia szerokości lub wysokości i jeśli aplikacja jest pobierana na urządzenia o różnych rozmiarach ekranu, widok ten nie będzie rozciągał się jak w oryginalnym rozmiarze ekranu.dp
zaleca się stosowanie zamiastpx
. Użyj,dp
jeśli chcesz wspomnieć o szerokości i wysokości, aby dynamicznie rosnąć i kurczyć się w zależności od rozmiarów ekranu.jeśli damy
dp/dip
, Android automatycznie obliczy rozmiar piksela na podstawie ekranu o rozmiarze 160 pikseli.SP(Scale independent pixels):
skalowane na podstawie preferencji użytkownika dotyczących rozmiaru czcionki. Czcionki powinny używać
sp
.gdy wspominasz o rozmiarach czcionek pasujących do różnych rozmiarów ekranu, użyj
sp
. Jest to podobne dodp
.Używajsp
szczególnie, aby rozmiary czcionek dynamicznie rosły i zmniejszały się w zależności od rozmiarów ekranuDokumentacja Androida mówi:
źródło
Ekran telefonu komórkowego składa się z tysięcy małych kropek zwanych pikselami (px) . Piksel to najmniejszy element, który tworzy zdjęcie. Im większa liczba pikseli do zrobienia zdjęcia lub sformułowania, tym ostrzejsza staje się i sprawia, że ekran smartfona jest bardziej czytelny.
Rozdzielczość ekranu mierzy się liczbą pikseli na ekranie. Rozdzielczość ekranu jest często stosowaną specyfikacją przy zakupie urządzenia, ale w rzeczywistości nie jest tak przydatna podczas projektowania dla Androida, ponieważ myślenie o ekranach w kategoriach pikseli ignoruje pojęcie rozmiaru fizycznego, co dla urządzenia dotykowego jest naprawdę bardzo ważne.
Piksel niezależny od gęstości (dp lub dip) pozwala projektantowi tworzyć zasoby, które pojawiają się w oczekiwany sposób, bez względu na rozdzielczość lub gęstość urządzenia docelowego.
Piksel niezależny od gęstości (dp lub dip) jest równy jednemu pikselowi przy gęstości podstawowej lub 160 dpi (kropki na cal).
1 px / 1dp = 160 dpi / 160 dpi
2 piksele / 1dp = 320 dpi (2x) / 160 dpi
gdzie,
dpi to liczba punktów na cal
Tak więc przy 320 dpi 1 dp to 2 piksele.
Formuła
px / dp = dpi / 160dpi
Kropki na cal (dpi) to miara ostrości (to znaczy gęstości podświetlonych punktów) na ekranie wyświetlacza. Kropki na cal dla danej rozdzielczości obrazu będą się różnić w zależności od ogólnego rozmiaru ekranu, ponieważ ta sama liczba pikseli jest rozmieszczona na innym obszarze.
Praca z pikselami niezależnymi od gęstości pomaga nam uporać się z sytuacją, w której masz dwa urządzenia o tej samej rozdzielczości pikseli, ale z różną ilością miejsca. Załóżmy, że w przypadku tablet i telefon mają tę samą rozdzielczość pikseli odpowiednio 1280 na 800 pikseli (160 dpi) i 800 na 1280 pikseli (320 dpi).
Ponieważ tablet ma podstawową gęstość (160 dpi), jego rozmiary fizyczne i niezależne od gęstości są takie same, 1280 x 800. Z drugiej strony telefon ma większą gęstość pikseli, więc ma o połowę mniej pikseli niezależnych od gęstości piksele. Telefon ma więc piksele niezależne od gęstości 400 na 640. Dlatego użycie piksela niezależnego od gęstości ułatwia wyobrażenie sobie, że tablet ma znacznie więcej miejsca niż telefon.
Podobnie, jeśli masz dwa urządzenia o podobnym rozmiarze ekranu, ale o różnej gęstości pikseli, powiedzmy, że jedno ma rozdzielczość 800 x 1280 pikseli (320 dpi), a drugie 400 x 640 pikseli (160 dpi), nie musimy definiować całkowicie różne układy dla tych dwóch urządzeń, ponieważ możemy mierzyć zasoby pod względem pikseli niezależnych od gęstości, które są takie same dla obu urządzeń.
800 na 1280 pikseli (320dpi) = 400 na 640 pikseli niezależnych od gęstości (dp)
400 na 640 pikseli (160 dpi) = 400 na 640 pikseli niezależny od gęstości (dp)
Rozdzielczość niezależna od skali (sp) jest preferowaną jednostką wielkości czcionki. W celu ułatwienia dostępu, Android pozwala użytkownikom dostosować rozmiar czcionki w urządzeniu. Użytkownicy, którzy mają problemy z odczytaniem tekstu, mogą zwiększyć rozmiar czcionki swojego urządzenia. Zazwyczaj tę opcję można znaleźć w ustawieniach wyświetlania w telefonie lub tablecie poniżej rozmiaru czcionki. Często jest również dostępny w ustawieniach dostępności.
Przy pikselach niezależnych od skali, 16 sp jest dokładnie takie samo jak 16 dp, gdy rozmiar czcionki urządzenia jest normalny lub 100%. Ale gdy rozmiar czcionki urządzenia jest duży, na przykład 125%, 16 sp przełoży się na 20 dp lub 1,25 razy 16.
Jeśli użyjesz dp jako jednostki rozmiaru czcionki, to ten fragment tekstu ma określony rozmiar fizyczny, bez względu na to, czy użytkownik dostosował rozmiar czcionki urządzenia. Używanie jednostek SP zapewni lepsze wrażenia osobom z upośledzeniem wzroku.
Odniesienie : Udacity , Google
źródło
Powinieneś używać go z tekstami, ponieważ jest on automatycznie skalowany zgodnie z rozmiarem czcionki używanej przez użytkownika w jego urządzeniu.
źródło
Zagęszczenie pikseli
Gęstość pikseli ekranu i rozdzielczość różnią się w zależności od platformy. Piksele niezależne od urządzenia i piksele skalowalne to jednostki, które zapewniają elastyczny sposób na dostosowanie projektu do różnych platform.
Obliczanie gęstości pikseli
Liczba pikseli pasujących do cala jest określana jako gęstość pikseli. Ekrany o wysokiej gęstości mają więcej pikseli na cal niż te o niskiej gęstości ....
Liczba pikseli pasujących do cala jest określana jako gęstość pikseli. Ekrany o wysokiej gęstości mają więcej pikseli na cal niż te o niskiej gęstości. W rezultacie elementy interfejsu użytkownika o tych samych wymiarach pikseli wydają się większe na ekranach o niskiej gęstości, a mniejsze na ekranach o wysokiej gęstości.
Aby obliczyć gęstość ekranu, możesz użyć tego równania:
Gęstość ekranu = szerokość (lub wysokość) ekranu w pikselach / szerokość (lub wysokość) ekranu w calach
Niezależność od gęstości
Gęstość pikseli ekranu i rozdzielczość różnią się w zależności od platformy. Piksele niezależne od urządzenia i piksele skalowalne to jednostki, które zapewniają elastyczny sposób na dostosowanie projektu do różnych platform.
Obliczanie gęstości pikseli Liczba pikseli, które mieszczą się w calach, nazywana jest gęstością pikseli . Ekrany o wysokiej gęstości mają więcej pikseli na cal niż te o niskiej gęstości ....
Niezależność od gęstości odnosi się do jednolitego wyświetlania elementów interfejsu użytkownika na ekranach o różnych gęstościach.
Piksele niezależne od gęstości , zapisane jako dp (wymawiane jako „ spadki ”), są elastycznymi jednostkami, które skalują się, aby mieć jednolite wymiary na dowolnym ekranie. Interfejsy użytkownika materiałów używają pikseli niezależnych od gęstości do spójnego wyświetlania elementów na ekranach o różnej gęstości.
Przeczytaj pełny tekst https://material.io/design/layout/pixel-density.html
źródło
Piksele (px) - odpowiadają rzeczywistym pikselom na ekranie. Jest to używane, jeśli chcesz podać w kategoriach bezwzględnych pikseli szerokości lub wysokości.
Piksele niezależne od gęstości (dp lub dip) - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Uwaga: Kompilator akceptuje zarówno „dip”, jak i „dp”, chociaż „dp” jest bardziej spójny z „sp”.
Pikale niezależne od skali (sp) - to jest jak jednostka dp, ale jest również skalowane przez preferencje użytkownika dotyczące rozmiaru czcionki. Zaleca się korzystanie z tego urządzenia podczas określania rozmiarów czcionek, aby dopasować je zarówno do gęstości ekranu, jak i preferencji użytkownika.
Zawsze używaj tylko dp i sp. sp dla rozmiarów czcionek i dp dla wszystkiego innego. Sprawi, że interfejs użytkownika będzie kompatybilny z urządzeniami z Androidem o różnych gęstościach. Możesz dowiedzieć się więcej o pikselach i dp na https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-
Adres URL źródła: - http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
źródło
Chcę zapewnić łatwy sposób zrozumienia
dp
. Myślę, żedp
najłatwiej to zrozumieć.dp
jest tylko jednostką długości fizycznej. Ma ten sam wymiar comm
lubinch
. To jest po prostu wygodne dla nas napisać50dp
,60dp
a nie50/160 inch
czy60/160 inch
, bo jedendp
jest tylko1/160 inch
niezależnie od wielkości ekranu lub rozdzielczość to.Jedynym problemem jest to, że rozdzielczość dpi niektórych ekranów w systemie Android nie jest dokładna. Na przykład ekran sklasyfikowany jako 160dpi może rzeczywiście mieć 170dpi. Tak więc wynik obliczeń
dp
jest rozmyty. Powinien być mniej więcej taki sam jak1/160 inch
.źródło