34 Pytanie: Jaka jest różnica między „px”, „dip”, „dp” i „sp”?

pytanie utworzone w Mon, Dec 3, 2018 12:00 AM

Jaka jest różnica między jednostkami miary Androida?

  • px
  • dip
  • dp
  • sp
5560
  1. to jest pełna różnica między px, dip, dp i sp w Androidzie [ developer.android.com/przewodnik /tematy /zasoby /…
    2012-05-25 09: 34: 20Z
  2. Ten fajny konwerter najlepiej to pokazuje , moim zdaniem. Jest również bardzo przydatny do eksportowania spritów z Photoshopa lub projektowania układu na wymiar fizyczny.
    2014-07-01 09: 28: 04Z
  3. nowy opis w Google Design Jednostki i pomiary
    2015-04-27 11: 31: 32Z
  4. 2017-07-15 10: 40: 21Z
  5. 2017-09-13 07: 41: 50Z
30 odpowiedzi                              30                         

Z Dokumentacji dla programistów Androida :

  1.   

    px
    Piksele - odpowiada rzeczywistym pikselom na ekranie.

  2.   

    w
    Cale - na podstawie fizycznego rozmiaru ekranu.
      1 cal = 2,54 centymetra

  3.   

    mm
    Milimetry - na podstawie fizycznego rozmiaru ekranu.

  4.   

    pt
    Punkty - 1/72 cala na podstawie fizycznego rozmiaru ekranu.

  5.   

    dp lub dip
    Gęstość - niezależne piksele - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do 160       ekran dpi, więc jeden dp to jeden piksel na ekranie 160 dpi. Stosunek       dp-to-pixel zmieni się wraz z gęstością ekranu, ale niekoniecznie       wprost proporcjonalnie. Uwaga: Kompilator akceptuje zarówno „dip”, jak i       „dp”, choć „dp” jest bardziej spójne z „sp”.

  6.   

    sp
    Skala - niezależne piksele - jest to jak jednostka dp, ale jest także skalowana według preferencji rozmiaru czcionki użytkownika. To jest zalecane       używaj tego urządzenia przy określaniu rozmiarów czcionek, aby zostały one dostosowane       zarówno dla gęstości ekranu, jak i preferencji użytkownika.

Z Zrozumienie niezależności gęstości w Androidzie :

 
+----------------+----------------+---------------+-------------------------------+
| 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 Google Design .

    
5552
2018-12-03 05: 07: 41Z
    nawet jeśli powinny być tym samym, zwykle mam wiele problemów z dp, gdy wszystko działa poprawnie z dipem
    2011-07-04 06: 07: 31Z
  1. Jedna uwaga na temat db /sp, która nie jest całkowicie oczywista: skalowanie, które występuje dla nich, nie zależy od rzeczywistej gęstości urządzeń (dpi), ale od tego, które „wiadro” o gęstościach, do których się zalicza: dostępne wiadra to: 120,160,240,320. Może to powodować pewne problemy z obsługą ekranów, które znacznie się różnią, ale stają się takie same.
    2011-10-29 04: 10: 05Z
  2. Zauważ, że dokumentacja w ogóle nie wspomina już o "dipie", tylko "dp", chociaż kompilator wciąż wydaje się akceptować "dip".
    2013-05-28 00: 28: 51Z
  3. @ android_developer (5 komentarzy powyżej) dp nie nie ma dokładnie taką samą długość fizyczną. (Chociaż jest blisko.) Zobacz komentarz @ Fraggle na temat wyrywania. Oznacza to, że 48dp będzie w przybliżeniu 8 mm (0,3 cala), ale może się różnić do 11 mm.
    2013-06-15 06: 59: 43Z
  4. Powodem wyrywania 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ć tak samo na wielu urządzeniach. Więc nawet jeśli fizyczny rozmiar przycisków itp. Zmieni się trochę, ogólny wygląd działania będzie taki sam.
    2013-06-15 07: 03: 34Z

Prawie wszystko o tym i jak uzyskać najlepszą obsługę wielu ekranów o różnych rozmiarach i gęstościach jest tutaj bardzo dobrze udokumentowane:

  

Rozmiar ekranu
  Rzeczywisty rozmiar fizyczny, mierzony jako przekątna ekranu.   Dla uproszczenia Android grupuje wszystkie rzeczywiste rozmiary ekranu na cztery   uogólnione rozmiary: małe, normalne, duże i bardzo duże.

     

Gęstość ekranu
  Liczba pikseli w fizycznym obszarze   ekran; zwykle określane jako dpi (punkty na cal). Na przykład a   „niski” ekran gęstości ma mniej pikseli na danym obszarze fizycznym,   w porównaniu z „normalnym” lub „wysokim” ekranem gęstości. Dla prostoty,   Android grupuje wszystkie rzeczywiste gęstości ekranu w sześć uogólnionych   gęstości: niska, średnia, wysoka, bardzo wysoka, extra-extra-high i   extra-extra-extra-high.

     

Orientacja
Orientacja ekranu od punktu użytkownika   widok. To jest krajobraz lub portret, co oznacza, że ​​ekran   format obrazu jest odpowiednio szeroki lub wysoki. Bądź świadomy, że nie   tylko różne urządzenia działają w różnych orientacjach   domyślnie, ale orientacja może się zmienić w czasie wykonywania, gdy użytkownik   obraca urządzenie.

     

Rozdzielczość
Łączna liczba pikseli fizycznych na   ekran. Podczas dodawania obsługi wielu ekranów aplikacje to robią   nie działa bezpośrednio z rozdzielczością; powinny dotyczyć aplikacji   tylko przy rozmiarze ekranu i gęstości, jak określono w uogólnionym   grupy wielkości i gęstości.

     

Niezależny od gęstości piksel (dp)
Wirtualny   jednostka pikseli, której należy użyć podczas definiowania układu interfejsu użytkownika, aby wyrazić   wymiary układu lub położenie w sposób niezależny od gęstości.   Piksel niezależny od gęstości odpowiada jednemu pikselowi fizycznemu na 160   ekran dpi, który jest gęstością bazową przyjętą przez system dla a   „średni” ekran gęstości. W czasie wykonywania system transparentnie obsługuje   wszelkie skalowanie jednostek dp, w razie potrzeby, w oparciu o rzeczywistą gęstość   ekranu w użyciu. Konwersja jednostek dp na piksele ekranu wynosi   prosty:    px = dp * (dpi / 160).   Na przykład na ekranie 240 dpi, 1 dp   równa się 1,5 piksela fizycznego. Zawsze powinieneś używać jednostek dp kiedy   definiowanie interfejsu użytkownika aplikacji, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika   ekrany o różnych gęstościach.

Jeśli poważnie myślisz o stworzeniu aplikacji na Androida dla więcej niż jednego typu urządzenia, powinieneś przeczytać przynajmniej raz dokument pomocniczy. Poza tym jestzawsze dobrze jest znać rzeczywistą liczbę aktywnych urządzeń, które mają określoną konfigurację ekranu.

657
2018-11-27 09: 16: 27Z
  1. Więc jeśli użyjesz dp dla przycisku i sp dla rozmiaru czcionki tekstu przycisku, co się stanie, gdy użytkownik zacznie skalować? Tekst zostanie powiększony, ale czy przycisk dostosuje się do tego poprzez powiększenie?
    2012-10-05 09: 35: 46Z
  2. @ Wytze, nope. W przypadku rzeczy, w których dopasowanie tekstu może być problemem, używałbym po prostu funkcji dip, aby rzeczy się nie przepełniły.
    2013-07-13 17: 39: 50Z
  3. @ Wytze I I, przeciwnie, używaj sp zarówno dla tekstu, jak i tego, co zawiera. Na przykład, jeśli mam przycisk ze stałym rozmiarem i tekstem w środku, przypisz rozmiar przycisku w sp, aby skalował się 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ć.
    2013-10-14 23: 15: 04Z
  4. Jeśli twoi projektanci nie zostawiają miejsca na elementy tekstowe do skalowania zgodnie z rozmiarem sp, jedną z opcji jest przełączenie na dowolny układ, którego użyjesz dla węższego urządzenie, a następnie skaluj wszystko jednolicie przez (DisplayMetrics.scaledDensity /DisplayMetrics.density).
    2014-07-16 17: 52: 16Z
  5. @ Sam brak wolnego miejsca spowoduje również problemy podczas i18n
    2018-07-16 09: 14: 30Z

Opowiem więcej o tym, jak dokładnie dp convert to px:

  • Jeśli działasz na urządzeniu mdpi, obraz 150 x 150 px zajmie 150 * 150 dp miejsca na ekranie.
  • Jeśli uruchomisz urządzenie HDpi, obraz 150 x 150 px zajmie 100 * 100 dp miejsca na ekranie.
  • Jeśli uruchomisz urządzenie xhdpi, obraz 150x150 px zajmie 75 * 75 dp miejsca na ekranie.

Na odwrót: powiedzmy, że chcesz dodać obraz do aplikacji i potrzebujesz go do wypełnienia kontrolki 100 * 100 dp. Musisz utworzyć obrazy o różnych rozmiarach dla obsługiwanych rozmiarów ekranu:

  •  100 * 100 px obraz dla mdpi
  •  150 * 150 px obraz dla hdpi
  •  200 * 200 px obraz dla xhdpi
325
2018-04-06 19: 03: 33Z
  1. Jak obliczyć 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?
    2015-03-07 12: 25: 35Z
  2. @ Rakeshpatanga Przy gęstości 160 dpi, 1 px = 1 dp (fizyczne piksele 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 to (1) * (320/160) = 2 piksele, a dwa dp to (2) * (320/160) = 4 piksele.
    2017-09-06 14: 32: 17Z
  3. Ustaw je w monospace, aby zobaczyć: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (wstaw przerwy między wierszami po przecinkach). | _ | = 1 p i x el.
    2017-09-06 14: 49: 48Z
  4. re "Musisz utworzyć obrazy o różnych rozmiarach dla obsługiwanych rozmiarów ekranu:" To zależy. Dla małych obrazów o wysokim kontraście , np. ikony, dobrze jest utworzyć co najmniej najmniejszy rozmiar (aby mieć pewność, że będzie czysty) 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 zakresie rozmiarów przy wyższych gęstościach. W przypadku fotografii wystarczy określić obszar wyświetlania, który ma zostać wypełniony, i polegać na skalowaniu urządzenia.
    2018-05-22 11: 51: 30Z

px Piksele - punkt na skalę odpowiada rzeczywistym pikselom na ekranie.

w Cale - na podstawie fizycznego rozmiaru ekranu.

mm Milimetry - na podstawie fizycznego rozmiaru ekranu.

pt Punkty - 1/72 cala w oparciu o fizyczny rozmiar ekranu.

dp Gęstość - niezależne piksele - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi, więc dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek liczby pikseli do piksela zmieni się wraz z gęstością ekranu,  ale niekoniecznie wprost proporcjonalnie.  Uwaga: Kompilator akceptuje zarówno dip, jak i dp, choć dp jest bardziej spójny z sp.

sp -Piksele niezależne od skali - to jest jak jednostka dp,  ale jest także skalowany według preferencji rozmiaru czcionki użytkownika. Zaleca się używanie tego urządzenia przy określaniu rozmiarów czcionek,  więc będą one dostosowane zarówno do gęstości ekranu, jak i preferencji użytkownika.

Weźmy przykład dwóch ekranów o tym samym rozmiarze, ale jeden ma gęstość ekranu 160 dpi (punkty na cal, tj. piksele na cal), a drugi to 240 dpi.

 
                          Lower resolution   screen          Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent Pixels          240                               240
(“dip” or “dp” or “dps”)

Scale-independent pixels 
 (“sip” or “sp”)                  Depends on user font size settings    same
    
269
2018-11-27 10: 48: 04Z

Ponadto powinieneś mieć jasne zrozumienie następujących pojęć:

Rozmiar ekranu:

  

Rzeczywisty rozmiar fizyczny, mierzony jako przekątna ekranu. Dla uproszczenia Android grupuje wszystkie rzeczywiste rozmiary ekranu w   cztery uogólnione rozmiary: małe, normalne, duże i bardzo duże.

Gęstość ekranu:

  

Ilość pikseli w fizycznym obszarze ekranu; zwykle określane jako dpi (punkty na cal). Na przykład a   „niski” ekran gęstości ma mniej pikseli na danym obszarze fizycznym,   w porównaniu z „normalnym” lub „wysokim” ekranem gęstości. Dla prostoty,   Android grupuje wszystkie rzeczywiste gęstości ekranu w cztery uogólnione   gęstości: niska, średnia, wysoka i bardzo wysoka.

Orientacja:

  

Orientacja ekranu z punktu widzenia użytkownika. To jest krajobraz lub portret, co oznacza, że   współczynnik kształtu ekranu jest odpowiednio szeroki lub wysoki. Być świadomym   że nie tylko różne urządzenia działają w różnych orientacjach   domyślnie, ale orientacja może się zmienić w czasie wykonywania, gdy użytkownik   obraca urządzenie.

Rozdzielczość :

  

Łą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ć tylko ekranu   rozmiar i gęstość, określone przez uogólniony rozmiar i gęstość   grupy.

Niezależny od gęstości piksel (dp):

  

Wirtualna jednostka pikseli, której należy użyć podczas definiowania układu interfejsu użytkownika, aby wyrazić wymiary układu lub   pozycja 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, czyli   gęstość bazowa przyjęta przez system dla ekranu o średniej gęstości.   W czasie wykonywania system w przejrzysty sposób obsługuje dowolne skalowanie dp   jednostki, jeśli 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 240 dpi 1 dp równa się 1,5 fizycznego   pikseli. Podczas definiowania zawsze powinieneś używać jednostek dp   interfejs użytkownika aplikacji, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach za pomocą   różne gęstości.

Odniesienie: Witryna programistów Androida

    
216
2018-11-27 13: 10: 53Z

dp to dip. Użyj go do wszystkiego (margines, dopełnienie itp.).

Użyj sp tylko dla {rozmiar tekstu}.


Aby uzyskać ten sam rozmiar na różnych gęstościach ekranu, Android tłumaczy te jednostki na piksele w czasie wykonywania, więc nie ma dla ciebie trudnej matematyki.


Zobacz różnicę między px, dp i sp na różnych rozmiarach ekranu.

Wpisz opis obrazu tutaj>> </p>

<p> Źródło: <a href= Programowanie na Androida: Przewodnik po Big Nerd Ranch

    
190
2015-08-11 20: 53: 46Z

Obliczyłem poniższy wzór, aby przeliczyć dpi na dp i sp „wprowadź

    
135
2017-04-06 10: 24: 04Z
  1. Powinno być ppi zamiast dpi
    2014-01-29 17: 02: 47Z

Definicje

px lub kropka to piksel na fizycznym ekranie.

dpi to piksele na cal na fizycznym ekranie i reprezentują gęstość wyświetlania.

Android daje nazwy aliasów do kilku gęstości

  • ldpi (niski) ~ 120dpi
  • mdpi (średni) ~ 160dpi
  • hdpi (wysoka) ~ 240dpi
    • Większość urządzeń w 2015 r. jest tutaj
  • xhdpi (extra-high) ~ 320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-high) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

dip lub dp to gęstość pikseli indeksu , tzn. odpowiadają mniej więcej pikselom w zależności od gęstości fizycznej.

  • 1dp = 1px na mdpi

 wprowadź opis obrazu tutaj>> </a> </p>

<p> <strong> sp </strong> lub <strong> sip </strong> to <em> piksel niezależny od skali </em>. Są skalowane, gdy opcja <em> Duży tekst </em> jest włączona w ustawieniach <kbd> </kbd> > <kbd>Dostępność</kbd> </p>

<ul>
<li> 1sp = 1dp </li>
<li> 1sp = 1.2dp z dostępnością Duży tekst </li>
</ul>
<h1> Czego używać? </h1>

<blockquote>
  <p> Użyj <strong> sp </strong> dla rozmiaru tekstu. </p>
  
  <p> Użyj <strong> dp </strong> dla wszystkiego innego. </p>
</blockquote>
    </div>
<div class = 128

2016-03-02 09: 39: 05Z

Źródło 1

Źródło 2

Źródło 3 : (dane ze źródła 3 jest podane poniżej)

  

Są to wartości wymiarów zdefiniowane w XML. Określono wymiar   z liczbą, po której następuje jednostka miary. Na przykład: 10px, 2in,   5sp. Następujące jednostki miary są obsługiwane przez Androida:

     

dp

     

Piksele niezależne od gęstości - abstrakcyjna jednostka oparta na   gęstość fizyczna ekranu. Jednostki te odnoszą się do 160 dpi   Ekran (punkty na cal), na którym 1 dp jest w przybliżeniu równy 1 piks. Gdy   działa na wyższym ekranie gęstości, liczba pikseli użytych do narysowania   1dp jest skalowany o współczynnik odpowiedni dla dpi ekranu.   Podobnie w przypadku ekranu o niższej gęstości, liczba używanych pikseli   dla 1 dp jest zmniejszany. Stosunek liczby pikseli do piksela zmieni się wraz z   gęstość ekranu, ale nie jest to koniecznerily w bezpośredniej proporcji. Korzystanie z dp   Jednostki (zamiast jednostek px) to proste rozwiązanie do tworzenia widoku   wymiary w układzie zmieniają się prawidłowo dla różnych ekranów   gęstości. Innymi słowy, zapewnia spójność w świecie rzeczywistym   rozmiary elementów interfejsu użytkownika na różnych urządzeniach.

     

sp

     

Piksele niezależne od skali - To jest jak jednostka dp, ale również   skalowane według preferencji rozmiaru czcionki użytkownika. Zaleca się używanie   to urządzenie przy określaniu rozmiarów czcionek, więc zostaną one dostosowane   zarówno gęstość ekranu, jak i preferencje użytkownika.

     

pt

     

Punkty - 1/72 cala w oparciu o fizyczny rozmiar ekranu.

     

px

     

Piksele - odpowiada rzeczywistym pikselom na ekranie. Ta jednostka   miara nie jest zalecana, ponieważ rzeczywista reprezentacja może się różnić   na różnych urządzeniach; każde urządzenie może mieć inną liczbę pikseli na   cali i może mieć więcej lub mniej całkowitych pikseli dostępnych na ekranie.

     

mm

     

Milimetry - na podstawie fizycznego rozmiaru ekranu.

     

     

Cale - na podstawie fizycznego rozmiaru ekranu.

Uwaga: wymiar to prosty zasób, do którego odwołuje się wartość podana w atrybucie nazwy (nie nazwa pliku XML). W związku z tym możesz łączyć zasoby wymiarów z innymi prostymi zasobami w jednym pliku XML, pod jednym elementem.

    
122
2018-11-27 09: 15: 09Z
  1. Również: jaka jest wartość dodana tej odpowiedzi? Wydaje się, że nie ma niczego, o czym nie wspomniano w innych odpowiedziach.
    2013-12-27 09: 28: 25Z

Zasadniczo jedyny czas, w którym obowiązuje px, to jeden piksel, a jeśli chcesz dokładnie jeden piksel na ekranie, jak w przypadku dzielnika:

W przypadku> 160 dpi możesz uzyskać 2-3 piksele,

W przypadku> 120 dpi zaokrągla się do 0.

    
110
2018-03-31 10: 05: 28Z
  1. getDimensionPixelOffset zaokrągla w dół, getDimensionPixelSize zaokrągla w górę.
    2017-05-28 22: 24: 38Z

px

Piksele - odpowiadają 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 160 dpi, więc jeden dp to jeden piksel na ekranie 160 dpi.

Korzystanie z dp:

Niezależność 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 wyświetlanych na ekranach o różnych gęstościach. (tj.) Obraz powinien wyglądać w tym samym rozmiarze (nie powiększony ani pomniejszony) na różnych typach ekranów.

sp

Piksele niezależne od skali - jest to jak jednostka dp, ale jest także skalowana według preferencji rozmiaru czcionki użytkownika.

http://developer.android.com/guide/topics/resources/more -resources.html # Wymiar

    
93
2013-04-02 06: 35: 37Z

Gdzie korzystać z tego, co i amp; relacja między px i amp; dp?

Niezależny od gęstości piksel (dp)

Jednostka wirtualnego piksela, której należy użyć podczas definiowania układu interfejsu użytkownika, aby wyrazić wymiary układu lub pozycję w sposób niezależny od gęstości. Jak opisano powyżej, piksel niezależny od gęstości odpowiada jednemu pikselowi fizycznemu na ekranie o rozdzielczości 160 dpi, co jest gęstością linii bazowej przyjętą przez systemdla ekranu „średniej” gęstości. W czasie wykonywania system w sposób przezroczysty obsługuje dowolne skalowanie jednostek dp, w zależności od potrzeb, w oparciu o rzeczywistą gęstość używanego ekranu. Konwersja jednostek dp na piksele ekranu wynosi proste:

px = dp * (dpi /160).

Na przykład na ekranie 240 dpi 1 dp równa się 1,5 piksela fizycznego. Zawsze należy używać jednostek dp podczas definiowania interfejsu użytkownika aplikacji, aby zapewnić właściwe wyświetlanie interfejsu użytkownika na ekranach o różnych gęstościach.

Zrozumienie piksela na dp i vice versa 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 Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 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 or 320dpi)
Optional (screen size):
 4.7" diagonal
  • Spróbuj uzyskać wszystkie wartości pikseli w parzystych liczbach od zespołu kreatywnego. W przeciwnym razie precyzja zostanie utracona podczas mnożenia przez 0.5.

px

Zostało to wyjaśnione powyżej. Staraj się unikać plików układu. Ale są przypadki, w których wymagany jest px. na przykład linia podziału ListView. px jest tutaj lepszy, ponieważ daje linię jednopikselową jako dzielnik dla wszystkich rozdzielczości ekranu.

sp

Użyj sp dla rozmiarów czcionek. Wtedy zmieni się tylko czcionka wewnątrz aplikacji, gdy zmieni się rozmiar czcionek urządzenia (to znaczy Wyświetl - > Czcionki na urządzeniu). Jeśli chcesz zachować czcionkę o rozmiarze statycznym wewnątrz aplikacji, możesz podać jej rozmiar w dp. W takim przypadku nigdy się nie zmieni. Deweloperzy mogą uzyskać taki wymóg dla niektórych konkretnych ekranów, dlatego programiści mogą używać dp zamiast sp. We wszystkich innych przypadkach zalecane jest sp.

    
91
2015-06-06 14: 31: 47Z

Możesz zobaczyć różnicę między px a dp z poniższego zdjęcia, a także odkryć, że px i dp nie może zagwarantować tych samych rozmiarów fizycznych na różnych ekranach.

wprowadź opis obrazu tutaj>> </p>
    </div>
<div class = 83

2015-02-13 18: 50: 12Z
  1. @ EnesBattal, myślę, że dp nie jest ostrym rozmiarem fizycznym, jest to przybliżona wartość. Cytowanie z CapTech: „dp - Jest to jednostka niezależna od gęstości, jednak fizyczny rozmiar pojedynczego„ dp ”jest w przybliżeniu taki sam na każdej gęstości ekranu. Jest około 160„ dp ”w calach. Współczynnik skalowania, w zależności od na wiaderku gęstości urządzenia jest stosowana 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 kubła gęstości, w którym znajduje się urządzenie w. ”
    2015-09-17 14: 12: 16Z
  2. @ RuchirBaronia, myślę, że DP lub DIP wciąż jest wewnątrz apk, ponieważ apk nie wie, jakiego rodzaju gęstość ekranu będzie z nim jeszcze działać, więc niezależność urządzenia powinna być nadal zachowana.
    2015-11-25 18: 18: 55Z

Wszystko, co jest związane z rozmiarem tekstu i wyglądu, musi używać sp lub pt. Podczas gdy wszystko związane z rozmiarem kontrolek, układów itp. Musi być używane z dp.

Możesz użyć dp i dip w swoich miejscach.

    
74
2015-07-01 14: 30: 11Z

Używałbym tylko dp.

Dużo mówi się o używaniu „sp” dla rozmiarów czcionek i choć doceniam ten punkt, nie sądzę, że jest to właściwa rzecz z punktu widzenia projektu. Możesz przerwać swój projekt, jeśli użytkownik ma jakiś niewygodny wybór rozmiaru czcionki, a użytkownik skończy obwiniać aplikację , a nie własne wybory życiowe.

Ponadto, jeśli weźmiesz aplikację typu sp-font na tablet o rozdzielczości 160 dpi, zauważysz, że wszystko skaluje się ... ale twoja czcionka, w porównaniu z nią, będzie wyglądać malutko. To nie jest dobry wygląd.

Chociaż idea czcionek „sp” ma dobre serce, to jest to kiepski pomysł. Trzymaj się dp za wszystko.

    
65
2015-06-06 14: 42: 19Z
  1. Wiesz, że współczynnik skali czcionki zastosowany do sp jest czynnikiem, prawda? Wszystko, co wpływa na dp, wpływa również na sp. To powiedziawszy, nadal lepiej jest określić rozmiary czcionek przy użyciu dp zamiast sp, jeśli układ jest bardzo ciasny, a większe rozmiary nie zmieszczą się - lepiej mieć tekst mniejszy niż to, czego użytkownik chce, aby całkowicie pomieszany układ. Ale w pierwszej kolejności zawsze staraj się szanować preferencje dotyczące rozmiaru czcionki użytkownika - nawet największe ustawienie nie jest tak duże.
    2017-02-26 22: 06: 15Z

sp = skala niezależnego piksela

dp = dip = gęstość niezależnych pikseli

dpi = punkty na cal

  

Powinniśmy unikać używania sp .

     

Powinniśmy użyć dp do obsługi wielu ekranów.

Android obsługuje różne rozdzielczości ekranu

  • ldpi (niska) ~ 120 dpi
  • mdpi (średni) ~ 160 dpi
  • hdpi (wysoka) ~ 240 dpi
  • xhdpi (extra-high) ~ 320 dpi
  • xxhdpi (extra-extra-high) ~ 480 dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

Urządzenie 120 dpi ldpi ma 120 pikseli w rozmiarze 1 cala.

To samo dotyczy innych gęstości ...

Jako inżynierowie oprogramowania powinniśmy używać tego wzoru konwersji:

  

pixel = dp * (gęstość /160)

Więc 240 dpi urządzenia 1 dp będzie = 1 * (240/160) = 3/2 = 1.5 pikseli.

A 1 dp urządzenia o rozdzielczości 480 dpi będzie miało = 1 * (480/160) = 3 piksele.

Korzystając z wiedzy 1,5 i 3 pikseli, inżynier oprogramowania może zaprojektować układy dla różnych gęstości.

Aby sprawdzić parametry ekranu dowolnego urządzenia:

 
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();
    
61
2018-07-27 07: 02: 15Z
  1. Bardzo dobry tutorial do zrozumienia to: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
    2015-03-16 10: 06: 05Z
  2. "Powinniśmy unikać używania sp" Dlaczego tak jest? Powinieneś użyć sp, gdy masz do czynienia z rozmiarami czcionek, ponieważ uwzględnia on preferowany rozmiar tekstu użytkownika, developer.android.com/training/multiscreen/screendensities.html
    2015-03-20 10: 05: 57Z
  3. Odpowiedziałem w odniesieniu do perspektywy układu. Przeczytaj link podany przez Ciebie ", więc powinieneś użyć tej jednostki miary przy definiowaniu rozmiaru tekstu (ale nigdy dla rozmiarów układu). „
    2015-03-20 10: 22: 31Z
  4. Pytanie brzmiało: "Różnica między px, dp, dip i sp w Androidzie?" Twoja odpowiedź mówiła: „Powinniśmy unikać używania sp”. Nigdzie nie było wzmianki o „perspektywie układu”.
    2015-03-20 10: 28: 32Z
  5. Tak .. dp i dip są takie same ... używane zamiennie ... Czy moja odpowiedź rozwiązuje zapytanie?
    2015-11-24 06: 36: 23Z

Różnica między dp a sp jednostkami wymienionymi jako „ preferencje rozmiaru czcionki użytkownika ” przez odpowiedzi skopiowane z oficjalnej dokumentacji można zobaczyć w czasie wykonywania, zmieniając opcję Settings->Accessibility->Large Text.

Opcja

Large Text zmusza tekst do 1.3 razy większy.

 
private static final float LARGE_FONT_SCALE = 1.3f;

To może być oczywiście zależne od dostawcy, ponieważ leży w pakiety /aplikacje /Ustawienia .

    
58
2013-10-14 08: 44: 10Z

dpi -

  • Kropki na cale
  • Pomiar gęstości pikseli ekranu.

px - pixel

  • Do mapowania pikseli ekranu

pt - punkty

  • Około 1/72 cala, w odniesieniu do fizycznego rozmiaru ekranu.

w calach  - 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.

  • Na podstawie preferencji rozmiaru czcionki użytkownika.
  • Czcionka powinna być w „sp”.

dip -

  • dip == dp
  • Piksel niezależny od gęstości.
  • To zależy od gęstości ekranu.
  • W ekranie 160 dpi, 1 dp = 1 piksel.
  • Użyj dp oprócz rozmiaru czcionki tekstowej.

W standardzie używane są dp i sp. sp dla rozmiaru czcionki i dp dla wszystkiego innego.

Formuła konwersji jednostek:

  

px = dp * (dpi /160);

 
Density Bucket -> Screen Display => 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  
    
50
2015-11-24 08: 32: 41Z
  1. Zgodnie z dokumentacją Kompilator akceptuje zarówno „dip”, jak i „dp”, choć „dp” jest bardziej spójne z „sp”.
    2015-11-24 08: 15: 46Z

Oto formuła używana przez Androida:

  

px = dp * (dpi /160)

Gdzie dpi jest jedną z następujących gęstości ekranu. Listę wszystkich możliwych gęstości przejdź tutaj

Definiuje stałe „DENSITY_ *”.

  • ldpi (niski) ~ 120dpi
  • mdpi (średni) ~ 160dpi
  • hdpi (wysoka) ~ 240dpi
  • xhdpi (extra-high) ~ 320dpi
  • xxhdpi (extra-extra-high) ~ 480dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

Zaczerpnięte z tutaj .

To rozwiąże wiele nieporozumień przy tłumaczeniu między px i dp, jeśli znasz rozdzielczość ekranu.

Powiedzmy, że chcesz mieć obraz 60 dp dla ekranu hdpi, a następnie rozmiar fizyczny pikseli 60 dp to:

 
px = 60 * (240 / 160)
    
43
2018-03-09 06: 24: 59Z

Rozmiar ekranu w Android jest pogrupowany w kategorie small, medium, large, extra large, double-extra i triple-extra. Gęstość ekranu to ilość pikseli w obszarze (np. Cala) ekranu. Zwykle jest on mierzony w punktach na cal (dpi). Gęstość ekranu jest zgrupowana jako niska, średnia, wysoka i bardzo wysoka. Rozdzielczość to całkowita liczba pikseli na ekranie.

  • dp: Niezależny od gęstości piksel zmienia się w zależności od gęstości ekranu. W ekranie 160 dpi, 1 dp = 1 piksel. Z wyjątkiem rozmiaru czcionki, użyj dp zawsze.
  • dip: dip == dp. We wcześniejszych wersjach systemu Android zastosowano dip, a później zmieniono na dp.
  • sp: Scale Independent Pixel, skalowane na podstawie preferencji rozmiaru czcionki użytkownika. Czcionki powinny używać sp.
  • px: nasz zwykły standardowy piksel mapujący piksel ekranu.
  • w: cale, w odniesieniu do fizycznego rozmiaru ekranu.
  • mm: milimetry, w odniesieniu do fizycznego rozmiaru ekranu.
  • pt: 1/72 cala, w odniesieniu do fizycznego rozmiaru ekranu.

Formuła konwersji 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 rozmiaru wiadra 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) i 640 (xxxhdpi). Sugerowany przez Google stosunek do projektowania to 3: 4: 6: 8: 12 dla ldpi: mdpi: hdpi: xhdpi: xxhdpi

Zajmie obraz 150px X 150px,

  
  • 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 projekt interfejsu użytkownika na wszystkich urządzeniach z Androidem.

Kalkulator DPI w Javie

 
/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/


public class DPICalculator {

private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;    

private float forDeviceDensity;
private float width;
private float height;

public DPICalculator(float forDeviceDensity, float width, float height){
    this.forDeviceDensity = forDeviceDensity;
    this.width = width;
    this.height = height;
}

public static void main(String... args) {
    DPICalculator dpiCalculator = new DPICalculator(240,330,120);
    dpiCalculator.calculateDPI();
}


private float getPx(float dp, float value) {
    float px = dp * (value / forDeviceDensity );        
    return px;
}

private void calculateDPI() {

    float ldpiW = getPx(LDPI,width);        
    float ldpiH =  getPx(LDPI,height);
    float mdpiW = getPx(MDPI,width);        
    float mdpiH =  getPx(MDPI,height);        
    float hdpiW = getPx(HDPI,width);        
    float hdpiH =  getPx(HDPI,height);       
    float xdpiW = getPx(XHDPI,width);        
    float xdpiH =  getPx(XHDPI,height);
    float xxdpiW = getPx(XXHDPI,width);        
    float xxdpiH =  getPx(XXHDPI,height);
    float xxxdpiW = getPx(XXXHDPI,width);        
    float xxxdpiH =  getPx(XXXHDPI,height);

    System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
    System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
    System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
    System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
    System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
    System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);        
   }
}

Więcej informacji można znaleźć pod następującym linkiem.

http: //javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/

    
43
2018-03-28 10: 24: 14Z
  • px - jeden piksel, taki sam jak w CSS, JavaScript, itp.
  • sp - piksele niezależne od skali
  • dip - niezależne od gęstości piksele

Normalnie sp jest używane dla rozmiarów czcionek, podczas gdy dla innych używane jest dip (nazywane również dp).

    
42
2015-06-06 14: 41: 25Z

Przeczytaj odpowiedź z wiki społeczności. Poniżej wymienione są niektóre informacje, które należy wziąć pod uwagę oprócz powyższych odpowiedzi.

sp = skala niezależnego piksela

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 złamie układ, jeśli będzie używany niedbale w większości urządzeń.

sp pobiera tekst urządzenia, podczas gdy dp przyjmuje standard gęstości urządzenia (nigdy nie zmienia się w urządzeniu) Powiedz, że tekst 100sp może zajmować 80% ekranu lub 100% ekranu w zależności od rozmiaru czcionki ustawionej w urządzeniu

 wprowadź opis obrazu tutaj>> </p>

<p> Możesz również użyć sp dla ograniczeń układu, będzie działać :)
<strong> Brak standardowej aplikacji używającej sp dla całego tekstu </strong> </p>

<p> Użyj sp i dp dla rozmiaru tekstu biorąc pod uwagę UX. </p>

<ul>
<li> Nie używaj sp dla tekstu w pasku narzędzi (możesz użyć androida dostępnego dla różnych rozmiarów ekranu za pomocą dp) </li>
<li> Nie używaj sp dla tekstu w małych ograniczonych przyciskach, bardzo małych tekstach itp. </li>
</ul>
<p> Niektórzy ludzie używają ogromnego rozmiaru FONT w swoim telefonie, aby uzyskać lepszą czytelność, dając im mały tekst w formacie na sztywno będzie problemem UX. W razie potrzeby umieść sp dla tekstu, ale upewnij się, że nie złamie układu. </p>

<p> 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 włączyć zasoby xxxhdpi przynajmniej dla ikon w pasku bocznym, pasku narzędzi i dolnym pasku. Lepiej przejść do obrazów wektorowych, aby uzyskać jednolite i lepszej jakości obrazy dla wszystkich rozmiarów ekranu. </p>

<p> Zauważ również, że ludzie używają niestandardowej czcionki w swoim telefonie. Tak więc brak czcionki może powodować problemy z odstępami i wszystkim. Powiedz, że rozmiar tekstu 12sp dla czcionki niestandardowej może wymagać dodatkowych pikseli niż czcionek domyślnych. </p>

<p> Zapoznaj się z witryną dewelopera google w celu uzyskania informacji o screendensities i basedensity dla Androida.
<a href= https://developer.android.com/training/multiscreen/screendensities

    
38
2019-05-16 10: 37: 03Z

natknąłem się na dobry artykuł na temat projektowania interfejsu użytkownika aplikacji na Androida dla różnych rozdzielczości ekranu i chciałbym go tutaj zostawić tylko dla kogoś, kto szuka w tym obszarze. Tak, wiem, że jest to w jakiś sposób opisane w dokumentach Google (i wspomniane w powyższych postach), przeczytałem to, ale nie było to dla mnie dobre (tak, mogę być zbyt głupi)). Nie było dla mnie jasne, jak zaprojektować układy zdolne do obsługi różnych rozmiarów ekranu. Nienawidzę koncepcji DP i tak dalej, kiedy muszę wdrożyć „elastyczny” układ interfejsu użytkownika dla różnych ekranów. (Hej, programiści iOS - tak, masz rację, to koncepcja Storyboard).

Android nie ma złej koncepcji interfejsu użytkownika, ale niestety brakuje mu funkcji Storyboard. Projektowanie elastycznego interfejsu użytkownika w Androidzie nie jest rzeczą łatwą (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: - Decyduj rozmiar ekranu aplikacji na Androida

  

Jak zaprojektować interfejs użytkownika dla aplikacji na Androida dla różnych rozmiarów ekranu

     

Aby zaprojektować interfejs użytkownika aplikacji dla różnych rozmiarów ekranu, nasz wstępny projekt musi   spełniać minimalne wymagane miejsce dla każdego rozmiaru ekranu. Android definiuje a   minimalny rozmiar (w dp) dla każdego uogólnionego typu ekranu. Oto jest   Wskazówki dotyczące rozmiaru ekranu Android.    „Minimalny   Kiedy otrzymamy rozmiar ekranu w dp, nie wystarczy nam zaprojektować   interfejs użytkownika aplikacji na Androida. Dla każdego rozmiaru ekranu musimy przygotować grafikę   i obrazy bitmapowe dla każdej gęstości. Oto gęstość ekranu systemu Android   wytyczna.    „Android

     

Aby ułatwić obliczenia, możemy zastosować współczynnik skalowania 3: 4: 6: 8 między   cztery uogólnione gęstości. Jeśli stworzymy obraz o wymiarach 36 × 36 pikseli   Urządzenie ldpi, rozmiar zdjęć pozostałych będzie wynosił 48 × 48 dla mdpi,   72 × 72 dla hdpi i 96 × 96 dla xhdpi.

     

Jak zaprojektować interfejs aplikacji dla Androida w Photoshopie

     

Wielu projektantów ma problemy z projektowaniem interfejsu aplikacji na Androida w photoshopie lub innym pikselu   narzędzia do projektowania graficznego oparte na jednostce niezależnej od gęstości, dp.   Projektanci nie wiedzą, jak zmapować dp na piksel. Google także nie daje   dla nich przejrzysty przewodnik po projektach interfejsu użytkownika systemu Android, choć stanowią podstawowy   wzór na tłumaczenie dp i pikseli.

     

Jako definicja Androida, 1pd równa 1px poniżej urządzenia 160 dpi (mdpi).   Chcemy więc zaprojektować aplikację na Androida na duże urządzenie z Androidem   gęstość mdpi, możemy zdefiniować rozmiar naszego interfejsu w pikselach na 960 pikseli szerokości   i wysokość 720px; Postępuj zgodnie z tą samą zasadą mapowania, którą możemy uzyskać   zgodnie z wytycznymi dotyczącymi projektowania interfejsu użytkownika aplikacji na Androida:

     

Utwórz responsywny interfejs użytkownika z ConstraintLayout

    
36
2018-09-14 15: 03: 37Z

1) dp: (density independent pixels)

Liczba pikseli reprezentowanych w jednej jednostce dp wzrośnie wraz ze wzrostem rozdzielczości ekranu (gdy masz więcej punktów /pikseli na cal). I odwrotnie, na urządzeniach o niższej rozdzielczości liczba pikseli reprezentowanych 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. Oto równanie: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Ta jednostka jest skalowana zgodnie z rozdzielczością ekranu (podobną do dp), a także preferencją rozmiaru czcionki użytkownika.


3) px: (pixels)

Rzeczywiste piksele lub kropki na ekranie.


Aby uzyskać więcej informacji, odwiedź stronę

  

Przewodnik programisty Androida > Wymiar
Przewodnik programisty Androida > Ekrany

    
29
2018-04-02 13: 58: 40Z

Rozmiar ekranu w systemie Android jest pogrupowany w kategorie ldpi, mdpi, hdpi, xhdpi, xxhdpi i xxxhdpi. Gęstość ekranu to ilość pikseli w obszarze (np. cala) ekranu. Zwykle jest on mierzony w punktach na cal (dpi).

PX(Pixels):

  • nasz zwykły piksel standardowy, który odwzorowuje piksel ekranu. px oznacza bezwzględne piksele. Jest to używane, jeśli chcesz podać w kategoriach absolutnych pikseli dla szerokości lub wysokości. Niezalecane.

DP/DIP(Density pixels / Density independent pixels):

  • dip == dp. We wcześniejszych wersjach systemu Android zastosowano dip, a później zmieniono na dp. To jest alternatywa dla px.

  • Generalnie nigdy nie używamy px, ponieważ jest to wartość bezwzględna. Jeśli użyjesz px do ustawienia szerokości lub wysokości i jeśli ta aplikacja jest pobierana na urządzenia o różnych rozmiarach ekranu, to widok ten nie będzie rozciągał się zgodnie z oryginalnym rozmiarem ekranu.

  • dp zaleca się używanie zamiast px. Użyj dp, jeśli chcesz wspomnieć o szerokości i wysokości, aby rosnąć i zmniejszaj się dynamicznie na podstawie rozmiarów ekranu.

  • jeśli podamy dp/dip, android automatycznie obliczy rozmiar piksela na podstawie ekranu o rozmiarze 160 pikseli.

SP(Scale independent pixels):

  • skalowane na podstawie preferencji rozmiaru czcionki użytkownika. Czcionki powinny używać sp.

  • podczas wymieniania rozmiarów czcionek pasujących do różnych rozmiarów ekranu, użyj sp. Jest to podobne do dp.Użyj sp szczególnie w przypadku czcionek, które rosną i zmniejsz dynamicznie w oparciu o rozmiary ekranu

Dokumentacja Androida mówi:

  

przy określaniu wymiarów zawsze używaj dp lub sp jednostek. A dp to   piksel niezależny od gęstości, który odpowiada rozmiarowi fizycznemu a   piksel przy 160 dpi. sp jest tą samą jednostką bazową, ale jest skalowane przez   preferowany rozmiar tekstu użytkownika (jest to piksel niezależny od skali), więc Ty   powinien używać tej jednostki miary podczas definiowania rozmiaru tekstu

    
28
2015-10-07 08: 47: 56Z

Ekran telefonu komórkowego składa się z tysięcy małych kropek znanych jako piksele (px) . Piksel jest najmniejszym elementem, który tworzy obraz. Im więcej pikseli tworzy obraz lub słowo, tym ostrzejsze staje się ono i sprawia, że ​​ekran smartfona staje się łatwiejszy do odczytania.

Rozdzielczość ekranu mierzona jest liczbą pikseli na ekranie. Rozdzielczość ekranu jest powszechnie używaną specyfikacją przy zakupie urządzenia, ale w rzeczywistości nie jest to przydatne przy projektowaniu dla Androida, ponieważ myślenie o ekranach w kategoriach pikseli ignoruje pojęcie rozmiaru fizycznego, które dla urządzenia dotykowego jest naprawdę bardzo ważne. p>

Niezależny piksel gęstości (dp lub dip) pozwala projektantowi tworzyć zasoby, które pojawiają się w oczekiwany sposób, niezależnie od rozdzielczości lub gęstości docelowego urządzenia.

Piksel niezależny od gęstości (dp lub dip) jest równy jednemu pikselowi przy gęstości bazowej lub 160 dpi (punkty na cal).

1 px /1dp = 160 dpi /160 dpi

2 px /1dp = 320 dpi (2x) /160 dpi

gdzie,

dpi to punkty na cal

Tak więc przy 320 dpi 1 dp jest równe 2 px.

Formula

px /dp = dpi /160dpi

Kropki na cal (dpi) to miara ostrości (czyli gęstości oświetlanych punktów) na ekranie wyświetlacza. Punkty 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 rozłożona na inną przestrzeń.

Praca z pikselami niezależnymi od gęstości pomaga nam radzić sobie z sytuacją, w której masz dwa urządzenia o tej samej rozdzielczości pikseli, ale różniące się ilością miejsca. Załóżmy, że w etui tablet i telefon mają odpowiednio rozdzielczość pikseli 1280 na 800 pikseli (160 dpi) i odpowiednio 800 na 1280 pikseli (320 dpi).

Ponieważ tablet ma gęstość bazową (160 dpi), jego rozmiary fizyczne i niezależne od gęstości są takie same, 1280 na 800. Z drugiej strony telefon ma większą gęstość pikseli, więc ma o połowę mniejszą niezależność gęstości piksele jako fizyczne piksele. Telefon ma 400 niezależnych pikseli o gęstości 640 na 640. Tak więc użycie niezależnego od gęstości piksela ułatwia mentalne 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 jeden ma 800 na 1280 pikseli (320 dpi), a drugi to 400 na 640 pikseli (160 dpi), nie potrzebujemy zdefiniować zupełnie inne układy dla tych dwóch urządzeń, ponieważ możemy zmierzyć 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 niezależnych od gęstości pikseli (dp)

400 na 640 pikseli (160 dpi) = 400 na 640 niezależnych pikseli (dp)

Scale niezależne piksele (sp) to preferowana jednostka rozmiaru czcionki. W celu ułatwienia dostępu system Android pozwala użytkownikom dostosować rozmiar czcionki urządzenia. Użytkownicy, którzy mają problemy z odczytaniem tekstu, mogą zwiększyć rozmiar czcionki swojego urządzenia. Zwykle tę opcję można znaleźć w ustawieniach wyświetlania na telefonie lub tablecie w rozmiarze czcionki. Często jest również dostępna za pośrednictwem ustawień dostępności.

W przypadku pikseli 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 będzie przekładać się na 20 dp lub 1,25 razy 16.

Jeśli używasz dp jako jednostki dla rozmiaru czcionki, to ten fragment tekstu ma określony rozmiar fizyczny bez względu na to, czy użytkownik dostosował rozmiar czcionki urządzenia. Korzystanie z jednostek sp sprawi, że osoby z upośledzeniem wzroku będą miały lepsze wrażenia

Odniesienie : Udacity , Google

    
21
2017-10-18 05: 31: 24Z
  

sp: skaluje niezależny piksel

Powinieneś go używać z tekstami, ponieważ jest on automatycznie skalowany zgodnie z rozmiarem czcionki używanej przez użytkownika w jego urządzeniu.

  

px: piksel lub element obrazu to pojedynczy punkt na ekranie

    
17
2018-03-09 08: 59: 48Z

Zanim odpowiem na to pytanie, pozwól mi najpierw zmniejszyć liczbę jednostek. Więc tutaj: dp lub dip są takie same i są znane jako piksele niezależne od gęstości .

1. px - oznacza piksele. Piksele to pojedyncza kropka, wskazująca na ekranie. Ogólnie w branży mobilnej mierzy się ją w ppi (piksele na cal). Rozdzielczość ekranu jest wprost proporcjonalna do ppi, im większa liczba pikseli na cal, tym wyższa rozdzielczość ekranu.

Na przykład, jeśli narysujesz obraz o rozmiarze 200 px * 200 px , to jego wygląd musi być inny w przypadku urządzenia o wysokiej rozdzielczości niż niskiego urządzenie rozdzielczości. Powodem jest 200 px obraz na telefonie o niskiej rozdzielczości będzie wyglądał na większy niż na urządzeniu o wysokiej rozdzielczości.

Poniżej zdjęcia pokazują rozdzielczość tego samego obrazu na różnych telefonach -

  • Telefon z wysoką rozdzielczością ekranu

     Wpisz opis obrazu tutaj>> </a> </p>
</li>
<li>
<p> <strong> Telefon z niską rozdzielczością ekranu </strong> </p>

<p> <a href= Wpisz opis obrazu tutaj>> </a> </p>
</li>
</ul>
<p> <strong> 2. dip lub dp </strong> - abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu <em> 160 </em> dpi, więc jeden dp to jeden piksel na ekranie <em> 160 </em> dpi. Stosunek liczby pikseli do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. „Niezależność gęstości” odnosi się do jednolitego wyświetlania elementów interfejsu użytkownika na ekranach o różnych gęstościach. </p>

<ul>
<li> Obraz, który pokazuje <em> 80px (obraz po lewej stronie) </em> i <em> 80 dp (obraz po prawej stronie) </em>. Sprawdź różnicę. </li>
</ul>
<p> <a href= Wpisz opis obrazu tutaj>> </a> </p>

<p> dp jest równe jednemu pikselowi fizycznemu na ekranie o gęstości <em> 160 </em>. Aby obliczyć dp: </p>

<p> <strong> dp = (szerokość w pikselach * 160) /gęstość ekranu </strong> </p>

<p> <strong> 3. sp </strong> - oznacza skalowalne piksele. Ogólnie <em> sp </em> jest używany do tekstów w interfejsie użytkownika, a <em> sp </em> zachowuje ustawienia czcionki. Na przykład, jeśli użytkownik wybrał większą czcionkę niż <em> 30 sp </em>, automatycznie skaluje się, aby wyglądał na duży zgodnie z preferencjami użytkownika. </p>
    </div>
<div class = 14

2017-12-07 17: 58: 56Z
  1. pomyliłeś się z Phone with low screen resolution do odpowiedniego obrazu
    2017-12-04 12: 30: 52Z
  2. @ RoyiNamir Czy mógłbyś wyjaśnić swój komentarz lub, jeśli to możliwe, zaproponować edycję
    2017-12-07 13: 23: 30Z
  3. to jest telefon o wysokiej rozdzielczości. nie niski: i.imgur.com/tnu87VR.jpg
    2017-12-07 13: 24: 34Z

Chcę zapewnić łatwy sposób zrozumienia dp. W rzeczywistości myślę, że dp jest najłatwiejszy do zrozumienia. dp to tylko jednostka długości fizycznej. Ma ten sam wymiar co mm lub inch. Po prostu wygodnie jest pisać 50dp, 60dp zamiast 50/160 inch lub 60/160 inch, ponieważ dp ma tylko 1/160 inch, niezależnie od rozmiaru ekranu i rozdzielczości.

Jedynym problemem jest to, że w niektórych ekranach android dpi nie jest dokładny. Na przykład ekran sklasyfikowany na 160 dpi może mieć rzeczywiście 170 dpi. Tak więc wynik obliczeniowy dp jest niewyraźny. Powinien być mniej więcej taki sam jak 1/160 inch.

    
13
2016-04-02 03: 35: 21Z

SDP - skalowalna jednostka wielkości - zasadniczo nie jest to jednostka, ale wymiaruje zasoby dla różnych rozmiarów ekranu.

Wypróbuj bibliotekę sdp od Intuit. Jest bardzo przydatny w rozwiązywaniu problemów z jednostkami i możesz szybko obsługiwać wiele ekranów .

Użycie

android:paddingBottom="@dimen/_15sdp" dla dodatnich i android:layout_marginTop="@dimen/_minus10sdp" dla negatywnych sdp sdp

Ma równoważną wartość w dp dla każdego rozmiaru w values-sw<N>dp folderach (sw = najmniejsza szerokość).

Uwaga

Używaj go ostrożnie! W większości przypadków nadal musisz zaprojektować inny układ tabletów.

Przykład

 
<LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="@dimen/_minus10sdp"
          android:paddingBottom="@dimen/_15sdp"
          android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="♡"
                    android:textColor="#ED6C27"
                    android:textSize="@dimen/_70sdp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="U"
                    android:textColor="@android:color/black"
                    android:textSize="@dimen/_70sdp" />
            </LinearLayout>

Możesz użyć db dla rozmiaru tekstu, ale wolę ssp dla rozmiaru tekstu.

Aby uzyskać więcej informacji, sprawdź stronę biblioteki GitHub .

    
13
2017-10-18 05: 26: 33Z
źródło umieszczone tutaj