Aký je rozdiel medzi "px", "dip", "dp" a "sp"?

Aký je rozdiel medzi mernými jednotkami systému Android?

  • px
  • ponor
  • dp
  • sp
Riešenie

Z Dokumentácie pre vývojárov systému Android:

px Pixels - zodpovedá skutočným pixelom na obrazovke.

  1. v Inches - zodpovedá fyzickej veľkosti obrazovky.
    1 palec = 2,54 centimetra

  2. mm milimetre - na základe fyzickej veľkosti obrazovky.

  3. pt Body - 1/72 palca na základe fyzickej veľkosti obrazovky.

  4. dp alebo dip Hustota nezávislá na pixeloch - abstraktná jednotka, ktorá je založená na fyzickej hustote obrazovky. Tieto jednotky sú relatívne voči 160 dpi, takže jeden dp je jeden pixel na obrazovke s rozlíšením 160 dpi. Pomer dp k pixelu sa mení s hustotou obrazovky, ale nie nevyhnutne priamo úmerne. Poznámka: Kompilátor akceptuje aj "dip" a "dp", hoci "dp" je konzistentnejší s "sp".

  5. sp Nezávislé na mierke pixelov - je to podobná jednotka ako dp, ale tiež sa škáluje podľa preferencie veľkosti písma používateľa'. Odporúča sa, aby ste používať túto jednotku pri zadávaní veľkosti písma, aby sa prispôsobila podľa hustoty obrazovky aj podľa preferencií používateľa.

Z Understanding Density Independence In Android:

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

Viac informácií nájdete aj v Dokumentácii dizajnu Google.

Komentáre (11)

Takmer všetko o tom, ako dosiahnuť čo najlepšiu podporu viacerých obrazoviek rôznych veľkostí a hustoty, je veľmi dobre zdokumentované tu:

Veľkosť obrazovky
Skutočná fyzická veľkosť meraná ako uhlopriečka obrazovky. Pre zjednodušenie systém Android zoskupuje všetky skutočné veľkosti obrazoviek do štyroch všeobecných veľkostí: malá, normálna, veľká a veľmi veľká.

Hustota obrazovky
Počet pixelov v rámci fyzickej plochy obrazovky. obrazovky; zvyčajne sa označuje ako dpi (počet bodov na palec). Napríklad "nízka" hustota obrazovky má menej pixelov v rámci danej fyzickej plochy, v porovnaní s "normálnou" alebo "vysokou" hustotou obrazovky. Pre zjednodušenie, Android zoskupuje všetky skutočné hustoty obrazovky do šiestich všeobecných hustoty: nízka, stredná, vysoká, mimoriadne vysoká, mimoriadne mimoriadne vysoká a extra-extra-extra-high.

Orientácia
Orientácia obrazovky z pohľadu používateľa pohľadu. Je to buď na šírku, alebo na výšku, čo znamená, že obrazovka'je pomer strán je buď široký, alebo vysoký. Uvedomte si, že nie rôzne zariadenia fungujú len v rôznych orientáciách podľa predvolene, ale orientácia sa môže zmeniť počas behu, keď používateľ otočí zariadenie.

Rozlíšenie
Celkový počet fyzických pixelov na obrazovke. Pri pridávaní podpory pre viacero obrazoviek aplikácie robia nepracujú priamo s rozlíšením; aplikácie by sa mali zaoberať iba veľkosťou a hustotou obrazovky, ako je špecifikované vo všeobecných skupiny veľkosti a hustoty.

Pixel nezávislý od hustoty (dp)
Virtuálny pixelová jednotka, ktorú by ste mali používať pri definovaní rozloženia používateľského rozhrania, aby ste vyjadrili rozmery rozloženia alebo polohu spôsobom nezávislým od hustoty. pixel nezávislý od hustoty je ekvivalentný jednému fyzickému pixelu na 160 dpi, čo je základná hustota, ktorú systém predpokladá pre "stredná" hustota obrazovky. Počas behu systém transparentne spracúva akékoľvek škálovanie jednotiek dp podľa potreby na základe skutočnej hustoty používanej obrazovky. Konverzia jednotiek dp na pixely obrazovky je jednoduchý: px = dp * (dpi / 160). Napríklad na obrazovke s rozlíšením 240 dpi je 1 dp sa rovná 1,5 fyzického pixelu. Vždy by ste mali používať jednotky dp, keď definovaní používateľského rozhrania vašej aplikácie, aby ste zabezpečili správne zobrazenie používateľského rozhrania na obrazovkách s rôznou hustotou.

Ak to s vývojom aplikácie pre systém Android pre viac ako jeden typ zariadenia myslíte vážne, mali by ste si aspoň raz prečítať dokument o podpore vývoja obrazoviek. Okrem toho je vždy dobré poznať skutočný počet aktívnych zariadení, ktoré majú určitú konfiguráciu obrazovky.

  • Veľkosti a hustoty obrazoviek] 2
Komentáre (5)

Viac sa budem venovať tomu, ako presne sa dp prevádza na px:

  • Ak je obrázok 150 x 150 px spustený na zariadení s mdpi, zaberie 150 * 150 dp miesta na obrazovke.
  • Ak je obrázok 150 x 150 px spustený na zariadení s rozlíšením hdpi, zaberie 100 * 100 dp miesta na obrazovke.
  • Ak je obrázok 150 x 150 px spustený na zariadení s rozlíšením xhdpi, zaberie 75 * 75 dp miesta na obrazovke.

Opačný postup: povedzme, že chcete pridať obrázok do svojej aplikácie a potrebujete, aby vyplnil ovládací prvok 100 * 100 dp. Budete musieť vytvoriť rôzne veľkosti obrázkov pre podporované veľkosti obrazovky:

  • 100 * 100 px obrázok pre mdpi
  • 150 * 150 px obrázok pre hdpi
  • 200 * 200 px obrázok pre xhdpi
Komentáre (4)