Kāda ir atšķirība starp "px", "dip", "dp" un "sp"?

Kāda ir atšķirība starp Android mērvienībām?

  • px
  • dip
  • dp
  • sp
Risinājums

No Android izstrādātāja dokumentācijas:

  1. px pikseliem - atbilst faktiskajiem pikseļiem uz ekrāna.

  2. in collas - atbilst ekrāna fiziskajam izmēram.
    1 colla = 2,54 cm.

  3. mm Miljmetri - pamatojoties uz ekrāna fizisko izmēru.

  4. pt punkti - 1/72 collas daļa, pamatojoties uz ekrāna fizisko izmēru.

  5. dp vai dip No blīvuma neatkarīgi pikseļi - abstrakta vienība, kuras pamatā ir ekrāna fiziskais blīvums. Šīs vienības ir relatīvas attiecībā pret 160 dpi ekrānam, tātad viens dp ir viens piksele uz 160 dpi ekrāna. Attiecība dp un pikseļa attiecība mainās atkarībā no ekrāna blīvuma, bet ne vienmēr. tieši proporcionāli. Piezīme: Kompilators pieņem gan "dip", gan "dip". "dp", lai gan "dp" vairāk atbilst "sp".

  6. sp No mēroga neatkarīgi pikseļi - šī ir līdzīga vienība kā dp, taču arī tā tiek mērogota, ņemot vērā lietotāja izvēlēto fonta lielumu. Ieteicams izmantot šo vienību, norādot fontu izmērus, lai tie tiktu pielāgoti. gan ekrāna blīvumam, gan lietotāja vēlmēm.

No Understanding Density Independence In Android:

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Vairāk informācijas var atrast arī Google Dizaina dokumentācijā.

Komentāri (11)

Šeit ir ļoti labi dokumentēts viss par to, kā panākt vislabāko atbalstu vairākiem dažāda izmēra un blīvuma ekrāniem:

Ekrāna izmērs
Faktiskais fiziskais izmērs, ko mēra kā ekrāna diagonāli. Vienkāršības labad Android visus faktiskos ekrāna izmērus sagrupē četros grupās. vispārinātos izmērus: mazais, parastais, lielais un īpaši lielais.

Ekrāna blīvums
Pikseļu skaits ekrāna fiziskajā apgabalā. ekrānā; parasti apzīmē ar dpi (dots per inch). Piemēram. "zema blīvuma" ekrānā ir mazāks pikseļu skaits attiecīgajā fiziskajā laukumā, salīdzinājumā ar "normāla" vai "augsta" blīvuma ekrānu. Vienkāršības labad, Android visus faktiskos ekrāna blīvumus sagrupē sešos vispārīgos grupējumos. blīvumu: zems, vidējs, augsts, īpaši augsts, īpaši augsts, īpaši augsts un īpaši, īpaši, īpaši, īpaši, īpaši augsts.

Orientācija
Ekrāna orientācija no lietotāja viedokļa. skatiena. Tā ir vai nu ainava, vai portrets, kas nozīmē, ka ekrāna ekrāna's malu attiecība ir attiecīgi plats vai augsts. Ņemiet vērā, ka ne tikai dažādas ierīces darbojas dažādās orientācijās, izmantojot pēc noklusējuma, bet arī orientācija var mainīties darbības laikā, kad lietotājs pagriež ierīci.

Rezolūcija
Kopējais fizisko pikseļu skaits uz ekrānā. Pievienojot atbalstu vairākiem ekrāniem, lietojumprogrammas veic nestrādā tieši ar izšķirtspēju; lietojumprogrammām ir jārūpējas par tikai ar ekrāna izmēru un blīvumu, kā noteikts vispārīgajā lietojumprogrammā. izmēra un blīvuma grupas.

No blīvuma neatkarīga pikseļa (dp)
Virtuālais pikseļa vienība, kas jāizmanto, definējot lietotāja saskarnes izkārtojumu, lai izteiktu izkārtojuma izmērus vai pozīciju no blīvuma neatkarīgā veidā. No blīvuma neatkarīgs pikseļš ir līdzvērtīgs vienam fiziskam pikselim uz 160 > > > no blīvuma neatkarīga pikseļa. dpi ekrānā, kas ir sistēmas pieņemtais bāzes blīvums, lai "vidēja" blīvuma ekrānu. Darba laikā sistēma pārredzami apstrādā dp vienību mērogošanu, ja nepieciešams, pamatojoties uz faktisko blīvumu. izmantotā ekrāna. Dp vienību konvertēšana uz ekrāna pikseļiem ir šāda. vienkārša: px = dp * (dpi / 160). Piemēram, uz 240 dpi ekrāna 1 dp ir 1,5 fiziskie pikseļi. Vienmēr jālieto dp vienības, ja definējot lietojumprogrammas lietotāja interfeisu, lai nodrošinātu pareizu lietotāja interfeisa attēlošanu lietojumprogrammas ekrānos ar dažādu blīvumu.

Ja esat nopietni gatavojies izstrādāt Android lietojumprogrammu vairāk nekā viena veida ierīcēm, jums vismaz vienreiz būtu jāizlasa ekrānu atbalsta izstrādes dokuments. Turklāt vienmēr ir labi zināt, kāds ir faktiskais aktīvo ierīču skaits, kurām ir konkrētā ekrāna konfigurācija.

Komentāri (5)

Es sīkāk izskaidrošu, kā tieši dp pārvērš px:

  • Ja attēlu 150 x 150 px attēls aizņems 150 * 150 dp ekrāna laukuma, ja tas darbojas mdpi ierīcē.
  • Ja attēlu 150 x 150 px izmanto hdpi ierīcē, tas aizņems 100 * 100 dp ekrāna vietas.
  • Lietojot ierīcē ar xhdpi izšķirtspēju, 150 x 150 px attēls aizņems 75 * 75 dp ekrāna vietas.

Pretējā gadījumā: teiksim, jūs vēlaties pievienot attēlu savai lietojumprogrammai, un jums ir nepieciešams, lai tas aizpildītu 100 * 100 dp kontrolpulti. Jums būs jāizveido dažāda izmēra attēli atbalstītajiem ekrāna izmēriem:

  • 100 * 100 px attēls mdpi
  • 150 * 150 px attēls hdpi izšķirtspējas izšķirtspējas izšķirtspējai
  • 200 * 200 px attēls xhdpi izšķirtspējai
Komentāri (4)