Jaka jest różnica między "px", "dip", "dp"i " sp"?

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

  • px
  • dip
  • dp
  • sp
Author: Lazy Ninja, 2010-01-08

30 answers

Z dokumentacji programisty 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
    Density - niezależne piksele - abstrakcyjna Jednostka oparta na gęstości fizycznej ekranu. Jednostki te są w stosunku do 160 ekran dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp-to-pixel zmieni się wraz z gęstością ekranu, ale niekoniecznie bezpośrednio proporcje. Uwaga: kompilator akceptuje zarówno " dip " jak i "dp", choć " dp "jest bardziej zgodne z"sp".

  6. Sp
    Scale - niezależne piksele - to jest jak jednostka dp, ale jest również skalowane według preferencji rozmiaru czcionki użytkownika. Polecam użyj tej jednostki przy określaniu rozmiarów czcionek, aby zostały dostosowane zarówno dla gęstości ekranu, jak i preferencji użytkownika.

Z Zrozumienie Niezależność 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 znaleźć również w dokumentacji projektowej Google .

Do obliczania wymiarów na rzeczywistym urządzeniu można użyć aplikacji .

 5276
Author: Steven Byle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 13:51:02

Prawie wszystko o tym 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, Android grupuje wszystkie rzeczywiste rozmiary ekranu w cztery uogólnione rozmiary: małe, normalne, duże i bardzo duże.

Ekran gęstość
Ilość pikseli w fizycznym obszarze ekran; zwykle określane jako DPI (kropki na cal). Na przykład, a ekran "niskiej" gęstości ma mniej pikseli w danym obszarze fizycznym, w porównaniu do ekranu o" normalnej "lub" wysokiej " gęstości. Dla prostoty, Android grupuje wszystkie rzeczywiste gęstości ekranu w sześć uogólnionych gęstości: Niskie, Średnie, Wysokie, bardzo wysokie, bardzo wysokie i extra-extra-extra-high.

Orientacja
Na orientacja ekranu od punktu użytkownika widok. Jest to albo krajobraz, albo portret, co oznacza, że ekran jest proporcje są odpowiednio szerokie lub wysokie. Należy pamiętać, że nie tylko różne urządzenia działają w różnych orientacjach poprzez domyślne, ale orientacja może się zmieniać w czasie wykonywania, gdy użytkownik obraca urządzenie.

Rozdzielczość
całkowita liczba pikseli fizycznych na ekran. Przy dodawaniu obsługi wielu ekranów, aplikacji do nie działają bezpośrednio przy rozwiązywaniu problemów; wnioski powinny dotyczyć tylko z rozmiarem i gęstością ekranu, zgodnie z uogólnionymi grupy wielkości i gęstości.

Piksel niezależny od gęstości (dp)
wirtualny pikseli, których należy używać przy definiowaniu układu UI, aby wyrazić wymiary lub położenie układu w sposób niezależny od gęstości. Piksel niezależny od gęstości jest równoważny jednemu fizycznemu pikselowi na 160 ekran dpi, czyli gęstość bazowa zakładane przez system dla ekran "średniej" gęstości. W czasie pracy system przejrzyście obsługuje dowolne skalowanie jednostek dp, w razie potrzeby, w oparciu o rzeczywistą gęstość ekranu w użyciu. Konwersja jednostek dp na piksele ekranu jest proste: px = dp * (dpi / 160). Na przykład na ekranie o rozdzielczości 240 dpi, 1 dp równa się 1.5 pikseli fizycznych. Należy zawsze używać jednostek dp, gdy definiowanie interfejsu użytkownika aplikacji, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekrany z różnymi gęstości.

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

 624
Author: Bruiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-01 20:59:46

Rozwiążę więcej na temat tego, jak dokładnie dp konwertuje na px:

  • jeśli działa na urządzeniu mdpi, obraz 150 x 150 px zajmie 150 * 150 dp miejsca na ekranie.
  • jeśli działa na urządzeniu hdpi, obraz 150 x 150 px zajmie 100 * 100 dp miejsce na ekranie.
  • jeśli działa na urządzeniu xhdpi, obraz 150x150 px zajmie 75 * 75 dp miejsca na ekranie.

Odwrotnie: powiedzmy, że chcesz dodać obraz do aplikacji i potrzebujesz go do wypełnienia kontrolki 100 * 100 dp. Będziesz potrzebował aby 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
 295
Author: devmiles.com,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-06 19:03:33

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 na podstawie fizycznego rozmiaru ekranu.

Dp Density - niezależne piksele - abstrakcyjna Jednostka oparta na gęstości fizycznej ekranu. Jednostki te są w stosunku do Ekran o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi. Stosunek dp do piksela zmieni się wraz z gęstością ekranu, ale niekoniecznie w bezpośredniej proporcji. Uwaga: kompilator akceptuje zarówno dip, jak i dp, choć {[1] } jest bardziej zgodny z sp.

Sp - Piksele niezależne od skali - to jest jak Jednostka dp, ale jest również skalowany według preferencji rozmiaru czcionki użytkownika. Zaleca się używanie tego urządzenia przy określaniu rozmiarów czcionek, będą więc dostosowane do zarówno gęstość ekranu, jak i preferencje 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, czyli 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
 242
Author: Amit Gajera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 03:55:30

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ły, normalny, duży i bardzo duży.

Gęstość ekranu:

Ilość pikseli w fizycznym obszarze ekranu; zwykle określana jako DPI (kropki na cal). Na przykład, a ekran "niskiej" gęstości ma mniej pikseli w danym obszarze fizycznym, w porównaniu do ekranu o" normalnej "lub" wysokiej " gęstości. Dla prostoty, Android grupuje wszystkie rzeczywiste gęstości ekranu w cztery uogólnione gęstości: niskie, średnie, wysokie i bardzo wysokie.

Orientacja:

Orientacja ekranu z punktu widzenia użytkownika. Jest to krajobraz lub portret, co oznacza, że proporcje ekranu są szerokie lub wysokie, odpowiednio. Bądź świadomy że nie tylko różne urządzenia działają w różnych orientacjach domyślnie, ale orientacja może ulec zmianie w czasie wykonywania, gdy użytkownik obraca urządzenie.

Rozdzielczość:

Całkowita liczba pikseli fizycznych na ekranie. Podczas dodawania obsługi wielu ekranów aplikacje nie działają bezpośrednio z rozdzielczością; aplikacje powinny dotyczyć tylko ekranu wielkość i gęstość, określone przez wielkość uogólnioną i gęstość grupy.

Piksel niezależny od gęstości (dp):

Wirtualna Jednostka pikseli, której powinieneś użyć przy definiowaniu układu UI, aby wyrazić wymiary układu lub pozycję w sposób niezależny od gęstości. Piksel niezależny od gęstości odpowiada jednemu fizycznemu pikselowi na ekranie o rozdzielczości 160 dpi, czyli gęstość wyjściowa przyjęta przez system dla ekranu o" średniej " gęstości. W czasie wykonywania, system przejrzyście obsługuje wszelkie skalowanie dp jednostki, jak konieczne, w oparciu o rzeczywistą gęstość ekranu w użyciu. Konwersja jednostek dp na piksele ekranu jest prosta: px = dp * (dpi / 160). Na przykład na ekranie o rozdzielczości 240 dpi 1 dp równa się 1,5 fizycznej pikseli. Zawsze należy używać jednostek dp przy definiowaniu swojego UI aplikacji, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach z różne gęstości.

Reference: Android developers site

 190
Author: Sazzad Hissain Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 14:58:40

dp is dip. Używaj go do wszystkiego (margines, wyściółka itp.).

Użyj sp tylko dla {text-size}.


Aby uzyskać ten sam rozmiar na różnych gęstościach ekranu, Android przekłada te jednostki na piksele w czasie wykonywania, Więc nie ma dla Ciebie skomplikowanej matematyki.


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

Tutaj wpisz opis obrazka

Źródło: Programowanie Androida: The Big Nerd Ranch Guide

 176
Author: Mina Gabriel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-11 20:53:46

Obliczyłem poniższy wzór, aby dokonać konwersji dpi na dp i sp Tutaj wpisz opis obrazka

 124
Author: chaitanya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 10:24:04

Definicje

Px lub dot to piksel na fizycznym ekranie.

Dpi są pikselami na cal na fizycznym ekranie i reprezentują gęstość wyświetlacza.

Android nadaje aliasy nazwom kilku gęstości

  • ldpi (niski) ~120dpi
  • mdpi (medium) ~160dpi
  • hdpi (high) ~ 240dpi
    • większość urządzeń w 2015 roku 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) ~ 640dpi

Dip lub dp są pikselami gęstości-indenpendant, tzn. odpowiadają mniej więcej pikselom w zależności od gęstości fizycznej.

  • 1dp = 1px na mdpi

Tutaj wpisz opis obrazka

Sp lub sip jest piksel niezależny od skali . Są one skalowane, gdy opcja duży tekst jest włączona w Ustawieniach > dostępność

  • 1sp = 1dp
  • 1sp = 1.2 dp z dużym tekstem dostępności

Czego używać?

Użyj sp dla rozmiaru tekstu.

Użyj dp do wszystkiego innego.

 117
Author: rds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 09:39:05

Źródło 1

Źródło 2

Źródło 3: (Dane ze źródła 3 podano poniżej)

Są to wartości wymiarów zdefiniowane w XML. Określony jest wymiar z liczbą, po której następuje jednostka miary. Na przykład: mamba, związek / randka, 5sp. Następujące jednostki miary są obsługiwane przez system Android:

Dp

Piksele niezależne od gęstości - abstrakcyjna Jednostka oparta na gęstość fizyczna ekranu. Te jednostki względem 160 dpi (kropki na cal) ekran, na którym 1dp jest mniej więcej równa 1px. Kiedy działa na ekranie o wyższej gęstości, liczba pikseli użytych do rysowania 1dp jest skalowany w górę o współczynnik odpowiedni dla dpi ekranu. Podobnie, gdy na ekranie o mniejszej gęstości, liczba pikseli używanych dla 1dp jest skalowany w dół. Stosunek dp-do-piksela zmieni się wraz z gęstość ekranu, ale niekoniecznie w bezpośredniej proporcji. Korzystanie z dp jednostki (zamiast jednostek px) to prosty rozwiązanie do tworzenia widoku wymiary w układzie zmieniają rozmiar odpowiednio dla różnych ekranów gęstości. Innymi słowy, zapewnia spójność w rzeczywistym świecie rozmiary elementów interfejsu użytkownika na różnych urządzeniach.

Sp

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

Pt

Punkty-1/72 cala w zależności od fizycznego rozmiaru ekranu.

Px

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

Mm

Milimetry-na podstawie fizycznego rozmiaru ekranu.

In

Cale-na podstawie fizycznego rozmiaru ekranu.

Uwaga: wymiar jest prostym zasobem, do którego odwołuje się za pomocą wartości podanej w atrybucie name (Nie nazwy pliku XML). W ten sposób można łączyć zasoby wymiaru z innymi prostymi zasobami w jednym pliku XML, pod jednym elementem.

 111
Author: sms247,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 09:19:33

Zasadniczo jedynym czasem, w którym stosuje się px, jest jeden px, a to, jeśli chcesz dokładnie jeden piksel na ekranie, jak w przypadku dzielnika:

Na > 160 dpi, można uzyskać 2-3 piksele,

On >120 dpi, to zaokrągla się do 0.

 101
Author: Joe Plante,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-31 10:05:28

Px

Pixels-odpowiada rzeczywistym pikselom na ekranie.

Dp lub dip

Density-independent Pixels-abstrakcyjna jednostka, która opiera się na gęstości fizycznej ekranu. Jednostki te są w stosunku do ekranu o rozdzielczości 160 dpi, więc jeden dp to jeden piksel na ekranie o rozdzielczości 160 dpi.

Użycie dp:

Niezależność gęstości - Aplikacja osiąga "niezależność gęstości", gdy zachowuje rozmiar fizyczny (z punktu użytkownika widoku) elementów interfejsu użytkownika wyświetlanych na ekranach o różnych gęstościach. (ie) obraz powinien wyglądać w tym samym rozmiarze (nie powiększony lub zmniejszony) na różnych typach ekranów.

Sp

Scale-independent Pixels-to jest jak jednostka dp, ale jest również skalowane według preferencji rozmiaru czcionki użytkownika.

Http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

 85
Author: Nirav Ranpara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-02 06:35:37

Gdzie używać what & relationship between px & dp?

Density-independent pixel (dp)

Wirtualna Jednostka pikseli, której należy użyć przy definiowaniu układu UI, aby wyrazić wymiary lub położenie układu w sposób niezależny od gęstości. Jak opisano powyżej, niezależny od gęstości piksel jest równoważny jednemu fizycznemu pikselowi na ekranie o rozdzielczości 160 dpi, co jest podstawową gęstością przyjętą przez system dla ekranu o "średniej" gęstości. W czasie pracy, system przejrzyście radzi sobie z każdym skalowaniem jednostki dp, w razie potrzeby, na podstawie rzeczywistej gęstości ekranu w użyciu. Konwersja jednostek dp na piksele ekranu jest proste:

Px = dp * (dpi / 160).

Na przykład na ekranie o rozdzielczości 240 dpi 1 dp równa się 1.5 pikseli fizycznych. Przy definiowaniu interfejsu 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 dla dp i odwrotnie jest bardzo istotne (szczególnie dla podania dokładnych wartości dp dla creative team)

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 liczbach parzystych od zespołu kreatywnego. W przeciwnym razie utrata precyzji nastąpi przy mnożeniu przez 0,5.

Px

Jest to wyjaśnione powyżej. Staraj się unikać w plikach układu. Ale są pewne przypadki, w których wymagany jest px. na przykład linia dzielnika ListView. px jest lepszy tutaj dla dając jednopikselową linię jako dzielnik dla wszystkich rozdzielczościach ekranu.

Sp

Użyj sp dla rozmiarów czcionek. Wtedy tylko czcionka wewnątrz aplikacji zmieni się podczas zmiany rozmiaru czcionki urządzenia (czyli wyświetl -> czcionki na urządzeniu). Jeśli chcesz zachować czcionkę o statycznej wielkości wewnątrz aplikacji, możesz nadać jej wymiar w dp. W takim przypadku nigdy się to nie zmieni. Deweloperzy mogą uzyskać taki wymóg dla niektórych konkretnych ekranów, w tym celu programiści mogą używać dp zamiast sp. We wszystkich innych przypadkach zaleca się stosowanie sp.

 85
Author: Arunjyothis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-06 14:31:47

Możesz zobaczyć różnicę między px i dp na poniższym obrazku, a także możesz zauważyć, że px i dp nie mogą zagwarantować tych samych rozmiarów fizycznych na różnych ekranach.

Tutaj wpisz opis obrazka

 77
Author: Zephyr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 18:50:12

Cokolwiek związane z wielkością tekstu i wyglądem musi używać sp LUB pt. Natomiast wszystko związane z wielkością kontrolek, układów itp. należy stosować z dp.

Możesz używać zarówno dp, jak i dip na swoich miejscach.

 69
Author: Atish Agrawal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-01 14:30:11

Użyłbym tylko dp.

Dużo się mówi o używaniu "sp" dla rozmiarów czcionek i chociaż doceniam to, nie uważam, że jest to właściwe z punktu widzenia projektowania. Możesz skończyć łamanie projektu, jeśli użytkownik ma jakiś słaby wybór rozmiaru czcionki, a Użytkownik skończy obwiniać aplikację, a nie własne wybory życiowe.

Ponadto, jeśli weźmiesz aplikację sp-font na tablecie o rozdzielczości 160 dpi, przekonasz się, że Wszystko skaluje się... ale twoja czcionka, która będzie wyglądać malutko w porównaniu. To nie wygląda dobrze.

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

 62
Author: bharal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-06 14:42:19

Sp = scale independent pixel

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

Dpi = kropki na cal

Należy unikać stosowania sp .

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

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

  • ldpi (low) ~120 dpi
  • mdpi (medium) ~160 dpi
  • hdpi (high) ~240 dpi
  • xhdpi (extra-high) ~ 320 dpi
  • xxhdpi (extra-extra-high) ~480 dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

Urządzenie 120 dp LDPI ma 120 pikseli w rozmiarze 1 cala.

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

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

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

Więc 240 DPI urządzenie 1 dp będzie miało = 1 * (240/160) = 3/2 = 1.5 pikseli.

I 480 DPI urządzenie 1 dp będzie miało = 1 * (480/160) = 3 piksele.

Używając tego 1.5 i 3 wiedza o pikselach, inżynier oprogramowania może projektować 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();
 56
Author: Kushal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-27 07:02:15

Różnica pomiędzy jednostkami dp i spwymienionymi jako " preferencje rozmiaru czcionki użytkownika" w odpowiedziach skopiowanych z oficjalnej dokumentacji można zobaczyć w czasie wykonywania przez zmianę opcji Settings->Accessibility->Large Text.

Large Text opcja wymusza, aby tekst stał się 1.3 razy większy.

private static final float LARGE_FONT_SCALE = 1.3f;

Może to być oczywiście zależne od dostawcy, ponieważ leży w pakietach/aplikacjach / Ustawieniach.

 54
Author: auselen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-14 08:44:10

Dpi-

  • kropki na cale
  • pomiar gęstości pikseli ekranu.

Px-pixel

  • do mapowania pikseli ekranu

Pt-punkty

    [[4]}Około 1/72 cala, w odniesieniu do fizycznego rozmiaru ekranu.

In - inch - 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 preferowany rozmiar czcionki użytkownika.
  • czcionka powinna być w "sp".

Dip-

  • dip = = dp
  • gęstość niezależna od piksela.
  • różni się w zależności od gęstości ekranu.
  • na ekranie 160 dpi, 1 dp = 1 piksel.
  • Użyj dp z wyjątkiem rozmiaru czcionki tekstu.

W standardzie stosuje się dp i sp. sp dla rozmiaru czcionki i dp dla wszystkiego innego.

Wzór na przeliczanie 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  
 47
Author: Arunendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-24 08:32:41
  • px - jeden piksel, taki sam jak w CSS, JavaScript itp.
  • sp-piksele niezależne od skali
  • dip - density-independent pixels

Zwykle sp jest używany dla rozmiarów czcionek, podczas gdy dip jest używany (zwany także dp) dla innych.

 40
Author: DPC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-06 14:41:25

Oto wzór używany przez Androida:

Px = dp * (dpi / 160)

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_*".

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

Wzięte z tutaj .

To rozwiąże wiele nieporozumień podczas tłumaczenia między px i dp, jeśli znasz dpi ekranu.

Powiedzmy więc, że chcesz obraz 60 dp dla ekranu hdpi, wtedy fizyczny rozmiar piksela 60 dp wynosi:

px = 60 * (240 / 160)
 39
Author: Dan Borza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 06:24:59

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. cal) ekranu. Zazwyczaj jest mierzona w kropkach na cal (dpi). Gęstość ekranu jest zgrupowana jako Niska, Średnia, Wysoka i bardzo wysoka. Rozdzielczość to całkowita liczba pikseli na ekranie.

  • dp: gęstość niezależny piksel, różni się w zależności od gęstości ekranu . Na ekranie 160 dpi, 1 dp = 1 piksel. Poza rozmiarem czcionki Zawsze używaj dp.
  • dip: dip = = dp. We wcześniejszych wersjach Androida zastosowano dip, a później zmieniono go na dp.
  • sp: Skaluj niezależny piksel, skaluj na podstawie preferencji rozmiaru czcionki użytkownika. Czcionki powinny używać sp.
  • px: nasz standardowy piksel, który odwzorowuje piksel ekranu.
  • w: calach, w odniesieniu do fizycznego rozmiaru ekranu.
  • mm: mm, w odniesieniu do fizyczny rozmiar ekranu.
  • pt: 1/72 cala, w odniesieniu do fizycznego rozmiaru ekranu.

Wzór na przeliczanie jednostek

 px = dp * (dpi / 160)

Dp do px w urządzeniu

Poniższy przykład może pomóc lepiej zrozumieć. Skalowanie odbywa się w oparciu o rozmiar łyżki 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

Obraz o rozdzielczości 150px x 150px zajmie

  • 150 dp x 150 dp miejsce na ekranie w mdpi
  • 100 dp x 100 dp miejsce na ekranie w hdpi
  • 75 dp x 75 dp miejsce na ekranie w xhdpi

Możesz użyć poniższego kalkulatora DPI, aby naprawić rozmiary obrazów i inne wymiary, jeśli chcesz mieć jednolity wygląd interfejsu użytkownika we wszystkich urządzeniach z Androidem.

Kalkulator DPI w Java

/*
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 znajduje się pod linkiem.

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

 39
Author: Ravi Vaghela,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-28 10:24:14

Proszę przeczytać odpowiedź z community wiki. Poniżej wymienione są niektóre informacje, które należy wziąć pod uwagę oprócz powyższych odpowiedzi.

Sp = scale independent pixel

Dp = gęstość niezależnych pikseli

Dpi = gęstość pikseli

Przejrzałem powyższe odpowiedzi...nie do końca się zgadzają. sp dla rozmiaru tekstu, dp dla granic układu-standard. Ale sp dla rozmiaru tekstu złamie układ, jeśli zostanie użyty niedbale 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 ustawionej w urządzeniu

Tutaj wpisz opis obrazka

Możesz również użyć sp do ograniczeń układu, będzie działać :) No standard app use sp for whole text

Użyj sp i dp dla rozmiaru tekstu uwzględniającego UX.

  • Nie używaj sp dla tekstu w pasku narzędzi( można używać dimenów Androida dostępne lub dp)
  • Nie używaj sp dla tekstu w małych ograniczonych przyciskach, bardzo mniejszym tekście itp

Niektórzy ludzie używają ogromnej czcionki w swoim telefonie, aby uzyskać większą czytelność, dając im mały tekst na twardo będzie problemem UX. Umieść sp dla tekstu w razie potrzeby, ale upewnij się, że nie złamie układu.

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

 33
Author: shijin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-01 14:32:38

Natknąłem się na dobry artykuł o projektowaniu interfejsu aplikacji na Androida dla różnych rozdzielczości ekranu i chciałbym go tu zostawić dla kogoś, kto szuka w tej dziedzinie. Tak, Wiem, że jest to jakoś opisane w Google docs (i wspomniane w postach powyżej), czytałem, że ale to nie było dobre dla mnie (tak, mogę być zbyt głupi)). Nie było dla mnie jasne, jak projektować układy zdolne do obsługi różnych rozmiarów ekranu. Nienawidzę koncepcji DP i tak dalej, kiedy muszę zaimplementować "elastyczny" interfejs użytkownika układ 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 funkcji iOS Storyboard. Projektowanie elastycznego interfejsu użytkownika w Androidzie nie jest łatwe (w najlepszym przypadku).

Oto artykuł, który pomógł mi zrozumieć, co zrobić w Androidzie, aby tworzyć układy dla różnych rozmiarów ekranu:

JMSTUDIO Blog: - zdecyduj Rozmiar ekranu aplikacji na Androida

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

Aby zaprojektować interfejs aplikacji dla różnych rozmiarów ekranu, nasz wstępny projekt musi uzyskaj minimalną wymaganą przestrzeń dla każdego rozmiaru ekranu. Android definiuje minimalny rozmiar (w dp) dla każdego uogólnionego typu ekranu. Oto Wytyczne dotyczące rozmiaru ekranu Androida. Minimalny rozmiar ekranu dla Androida w dp Gdy dostaniemy 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 gęstość ekranu Androida wytyczna. Wytyczne dotyczące gęstości systemu Android (dpi)

Dla łatwego obliczenia możemy zastosować stosunek skalowania 3: 4: 6: 8 między cztery uogólnione gęstości. Jeśli stworzymy obraz 36 × 36 pikseli dla urządzenie ldpi, reszta gęstości zdjęcia rozmiar będzie 48×48 dla mdpi, 72×72 dla hdpi i 96×96 dla xhdpi.

Jak zaprojektować interfejs aplikacji na Androida w Photoshopie

Wielu projektantów ma problemy z zaprojektowaniem interfejsu aplikacji na Androida w Photoshopie lub innym pikselu oparte na narzędziach do projektowania graficznego ze względu na jednostkę niezależną od gęstości, dp. Projektanci nie wiedzą, jak mapować dp do piksela. Google też nie daje przejrzysty Android UI design guide dla nich, choć dają one podstawowe wzór na tłumaczenie dp i pikseli.

Zgodnie z definicją Androida, 1PD równa 1px poniżej 160 DPI device (mdpi). Dlatego chcemy zaprojektować aplikację na Androida dla urządzenia Xlarge Android z gęstość mdpi, możemy zdefiniować Nasz rozmiar UI w pikselu jako 960 pikseli szerokość i 720px w wysokości; postępuj zgodnie z tą samą regułą mapowania, możemy uzyskać po android app rozmiar ekranu UI projektowania wytyczne:

Rozmiar ekranu aplikacji Android w pikselach

Dodano: Jeśli interesuje Cię również "elastyczny" interfejs użytkownika, spójrz na tę bibliotekę: Android SDK, który zapewnia nową jednostkę rozmiaru-SDP (skalowalny dp). Ta jednostka rozmiaru skaluje się z rozmiarem ekranu (o czym również wspomniano w odpowiedzi tutaj, o bibliotece SDP)

ADDED2 Google ma w końcu zrozumiał przydatność koncepcji interfejsu iOS Storeboard i oto nadchodzi ConstraintLayout dla Android world: Zbuduj responsywny interfejs użytkownika z ConstraintLayout

 31
Author: Mixaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-14 15:03:37

Rozmiar ekranu W Androidzie jest pogrupowany w kategorie ldpi, mdpi, hdpi, xhdpi, xxhdpi i xxxhdpi. gęstość ekranu to ilość pikseli w obszarze (np. cal) ekranu. Zazwyczaj jest mierzona w kropkach na cal (dpi).

PX(Pixels):

  • nasz standardowy piksel, który odwzorowuje piksel ekranu. px jest przeznaczona dla Pikseli bezwzględnych. Jest to używane, jeśli chcesz podać w kategoriach bezwzględnych pikseli dla szerokości lub wysokości. Nie polecam.

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

  • dip == dp. We wcześniejszych wersjach Androida zastosowano dip, a później zmieniono go na dp. Jest to alternatywa px.

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

  • dp jest wysoce zalecany do stosowania zamiast px. Użyj dp, jeśli chcesz podać szerokość i wysokość, aby dynamicznie rosnąć i kurczyć się w zależności od 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.

  • Podając rozmiary czcionek, które pasują do różnych ekranów rozmiary, użyj sp. Jest to podobne do dp.Użyj sp specjalnie dla rozmiarów czcionek, aby dynamicznie rosnąć i kurczyć się w oparciu o rozmiary ekranu

Dokumentacja Androida mówi:

Przy określaniu wymiarów Zawsze używaj jednostek dp lub sp. A dp jest piksel niezależny od gęstości, który odpowiada fizycznemu rozmiarowi pixel at 160 dpi. An sp jest tą samą jednostką bazową, ale jest skalowana przez preferowany przez użytkownika rozmiar tekstu (jest niezależny od skali pixel), więc ty należy użyć tej jednostki miary przy definiowaniu rozmiaru tekstu

 26
Author: Rajesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-07 08:47:56

1) dp: (density independent pixels)

Liczba pikseli reprezentowanych w jednej jednostce dp będzie wzrastać wraz ze wzrostem rozdzielczości ekranu (gdy na cal przypada więcej punktów/pikseli). 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ć punkt odniesienia, z którym należy porównać. Ta linia bazowa to ekran o rozdzielczości 160 dpi. Jest to równanie: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Ta jednostka wagi zgodnie z DPI ekranu (podobnie jak dp), a także preferencjami rozmiaru czcionki użytkownika.


3) px: (pixels)

Rzeczywiste piksele lub kropki na ekranie.


Więcej szczegółów można znaleźć na stronie

Android Developer Guide > Dimension
Android Developer Guide > Screeny

 25
Author: IntelliJ Amiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-02 13:58:40

Ekran telefonu komórkowego składa się z tysięcy małych kropek znanych jako pikseli (px). Piksel jest najmniejszym elementem, który idzie zrobić zdjęcie. Im większa liczba pikseli, aby zrobić zdjęcie lub sformułowanie, tym ostrzejszy staje się i sprawia, że ekran smartfona jest łatwiejszy do odczytania.

Rozdzielczość ekranu mierzona jest liczbą pikseli na ekranie. Rozdzielczość ekranu jest powszechnie stosowaną specyfikacją przy zakupie urządzenia, ale w rzeczywistości nie jest to przydatne podczas projektowania dla Androida, ponieważ myślenie o ekranach pod względem pikseli ignoruje pojęcie wielkości fizycznej, co dla urządzenia dotykowego jest naprawdę bardzo ważne.

Density independent pixel (dp lub dip) pozwala projektantowi na tworzenie zasobów, które pojawiają się w oczekiwany sposób, bez względu na rozdzielczość lub gęstość urządzenia docelowego.

Niezależny od gęstości piksel (dp lub dip) jest równy jednemu pikselowi w gęstości bazowej lub 160 dpi (punktów na cal).

1 px / 1dp = 160 dpi / 160 dpi

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

Gdzie,

Dpi to kropki na cal

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

Formuła

Px / dp = dpi / 160dpi

Kropki na cal (dpi) to miara ostrości (czyli gęstości oś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 rozłożona na inny miejsce.

Praca z pikselami niezależnymi od gęstości pomaga nam poradzić 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 przypadku tabletu i telefonu rozdzielczość pikseli wynosi odpowiednio 1280 na 800 pikseli (160 dpi) i 800 na 1280 pikseli (320 dpi).

Teraz, ponieważ tablet ma wyjściową gęstość (160 dpi), jego fizyczne i niezależne od gęstości rozmiary pikseli są takie same, 1280 na 800. Telefon z drugiej strony ma większą gęstość pikseli, więc ma o połowę mniej pikseli niezależnych od gęstości niż piksele fizyczne. Więc telefon ma 400 na 640 gęstości niezależnych pikseli. Dzięki zastosowaniu piksela niezależnego od gęstości łatwiej jest wyobrazić sobie, że tablet ma znacznie więcej miejsca niż telefon.

Podobnie, jeśli masz dwa urządzenia o podobnym rozmiarze ekranu, ale różnej gęstości pikseli, powiedzmy, że jeden to 800 na 1280 pikseli (320 dpi), a drugi to 400 na 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 gęstości niezależnych pikseli, 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 gęstości niezależny piksel (dp)

Skaluj niezależne piksele(SP) jest preferowaną jednostką rozmiaru czcionki. W celu ułatwienia dostępu System Android umożliwia użytkownikom dostosowanie rozmiaru czcionki urządzenia. Użytkownicy, którzy mają problemy czytanie tekstu może zwiększyć rozmiar czcionki urządzenia. Zwykle można znaleźć tę opcję w ustawieniu wyświetlanie w telefonie lub tablecie w obszarze rozmiar czcionki. Często jest on również dostępny w ustawieniach dostępności.

W przypadku pikseli niezależnych od skali, 16 sp jest dokładnie taki sam 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żywasz 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. Korzystanie z jednostek sp zapewni lepsze wrażenia osobom z upośledzonym wzrokiem.

Bibliografia: Udacity , Google

 18
Author: Bhuvnesh Varma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-18 05:31:24

Sp: scale independent pixel

Powinieneś używać go 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 jest pojedynczym punktem na ekranie

 14
Author: A.Saini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 08:59:48

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

Jedynym problemem jest to, że dpi Androida niektórych ekranów nie są dokładne. Na przykład ekran o rozdzielczości 160dpi może mieć 170dpi rzeczywiście. Zatem wynik obliczeń dp jest rozmyty. Powinna być w przybliżeniu taka sama jak 1/160 inch.

 10
Author: ProtossShuttle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-02 03:35:21

SDP - skalowalna jednostka rozmiaru-w zasadzie nie jest to jednostka, ale zasoby wymiarowe dla różnych rozmiarów ekranu.

Spróbuj użyć bibliotekisdp z Intuit. Jest to bardzo przydatne w rozwiązywaniu problemów z jednostkami i możesz szybko obsługiwać wiele ekranów.

Użycie

android:paddingBottom="@dimen/_15sdp" dla dodatniego i android:layout_marginTop="@dimen/_minus10sdp" dla ujemnego sdp SDP

MA równoważną wartość w dp dla każdego rozmiaru folderów values-sw<N>dp (SW = smallestWidth).

Uwaga

Użycie ostrożnie! W większości przypadków nadal trzeba zaprojektować inny układ dla 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 ja wolę ssp dla rozmiaru tekstu.

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

 10
Author: Qamar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-18 05:26:33

Zanim odpowiem na to pytanie pozwól mi najpierw zmniejszyć liczbę jednostek. Więc proszę bardzo: 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, punkt na ekranie. Ogólnie w przemyśle mobilnym jest mierzony w ppi (pikselach na cal). Rozdzielczość ekranu jest wprost proporcjonalna do ppi, im większa liczba pikseli na cal, tym wyższa rozdzielczość ekranu.

Dla przykład, jeśli narysujesz obraz o rozmiarze 200 px * 200 px , wtedy jego wygląd musi być inny na urządzeniu o wysokiej rozdzielczości niż na urządzeniu o niskiej rozdzielczości. Powodem jest to, że 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 wysokim ekranem rozdzielczość

    Tutaj wpisz opis obrazka

  • Telefon o niskiej rozdzielczości ekranu

    Tutaj wpisz opis obrazka

2. dip lub dp - abstrakcyjna Jednostka oparta na gęstości fizycznej ekranu. Jednostki te są w stosunku do 160 ekran dpi, więc jeden dp to jeden piksel na 160 ekran dpi. Stosunek dp do piksela zmieni się wraz z gęstością ekranu, ale niekoniecznie w bezpośredniej proporcji. "Niezależność gęstości" odnosi się do jednolitego wyświetlania elementów interfejsu użytkownika na ekranach o różnych gęstościach.

  • obraz pokazujący 80px (obraz z lewej strony) i 80 dp (obraz z prawej strony). Różnica w kasie.

Tutaj wpisz opis obrazka

Dp jest równa jednemu fizycznemu pikselowi na ekranie o gęstości 160. Aby obliczyć dp:

Dp = (szerokość w pikselach * 160) / gęstość ekranu

3. sp - oznacza skalowalne piksele. Ogólnie sp {[2] } jest używany dla tekstów w interfejsie użytkownika, a sp zachowuje ustawienia czcionki. Na przykład, jeśli użytkownik wybrał większą czcionkę niż 30 sp, Automatycznie skaluje się, aby była duża zgodnie z preferencjami użytkownika.

 10
Author: Rahul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-07 17:58:56