px", "dip", "dp" ve "sp" arasındaki fark nedir?

Android ölçü birimleri arasındaki fark nedir?

  • px
  • dip
  • dp
  • sp
Çözüm

Android Geliştirici Belgeleri]'nden (http://developer.android.com/guide/topics/resources/more-resources.html#Dimension):

  1. px Pikseller - ekrandaki gerçek piksellere karşılık gelir.

  2. içinde İnç - ekranın fiziksel boyutuna göre.
    1 İnç = 2,54 santimetre

  3. mm Milimetre - ekranın fiziksel boyutuna göre.

  4. pt Puanlar - Ekranın fiziksel boyutuna bağlı olarak bir inçin 1/72'si.

  5. dp veya dip Yoğunluktan bağımsız Pikseller - ekranın fiziksel yoğunluğunu temel alan soyut bir birimdir. Bu birimler bir 160 dpi ekran, yani bir dp 160 dpi ekranda bir pikseldir. Oranı dp-piksel oranı ekran yoğunluğuna göre değişecektir, ancak bu zorunlu değildir doğru orantılı olarak. Not: Derleyici hem "dip" hem de "dp" olsa da "dp" "sp" ile daha tutarlıdır.

  6. sp Ölçekten bağımsız Pikseller - bu dp birimi gibidir, ancak aynı zamanda kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir. Bu tavsiye edilir yazı tipi boyutlarını belirlerken bu birimi kullanın, böylece ayarlanacaktır Hem ekran yoğunluğu hem de kullanıcı tercihi için.

Understanding Density Independence In Android](https://www.captechconsulting.com/blogs/understanding-density-independence-in-android) adresinden alınmıştır:

+----------------+----------------+---------------+-------------------------------+
| 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Daha fazla bilgi Google Design Documentation adresinde de bulunabilir.

Yorumlar (11)

Bununla ilgili hemen hemen her şey ve farklı boyutlarda ve yoğunluklarda birden fazla ekran için en iyi desteğin nasıl elde edileceği burada çok iyi belgelenmiştir:

Ekran boyutu
Ekranın köşegeni olarak ölçülen gerçek fiziksel boyut. Basitlik için, Android tüm gerçek ekran boyutlarını dört grupta toplar genelleştirilmiş boyutlar: küçük, normal, büyük ve ekstra büyük.

Ekran yoğunluğu
Ekranın fiziksel bir alanı içindeki piksel sayısı ekran; genellikle dpi (inç başına nokta) olarak adlandırılır. Örneğin, bir "düşük" yoğunluklu ekran, belirli bir fiziksel alan içinde daha az piksele sahiptir, "normal" veya "yüksek" yoğunluklu bir elek ile karşılaştırıldığında. Basitlik için, Android tüm gerçek ekran yoğunluklarını altı genelleştirilmiş yoğunluklar: düşük, orta, yüksek, ekstra yüksek, ekstra ekstra yüksek ve ekstra-ekstra-ekstra-yüksek.

Orientation
Kullanıcının bakış açısından ekranın oryantasyonu görüntüleyin. Bu ya yatay ya da dikeydir, yani ekran'ın en boy oranının sırasıyla geniş veya uzun olduğu anlamına gelir. Unutmayın ki sadece farklı cihazlar farklı yönlerde çalışarak varsayılandır, ancak yönelim kullanıcı tarafından çalışma zamanında değiştirilebilir cihazı döndürür.

Çözünürlük
Üzerindeki toplam fiziksel piksel sayısı bir ekran. Birden fazla ekran için destek eklerken, uygulamalar doğrudan çözünürlükle çalışmamalı; uygulamalarla ilgilenilmeli yalnızca genelleştirilmiş ekran boyutu ve yoğunluğu ile belirtildiği gibi boyut ve yoğunluk grupları.

Yoğunluktan bağımsız piksel (dp)
Bir sanal UI düzenini tanımlarken kullanmanız gereken piksel birimi, ifade etmek için düzen boyutları veya yoğunluktan bağımsız bir şekilde konumlandırma. Yoğunluktan bağımsız piksel, 160 piksel üzerindeki bir fiziksel piksele eşdeğerdir. dpi ekran için sistem tarafından varsayılan temel yoğunluktur. "orta" yoğunluklu elek. Çalışma zamanında, sistem şeffaf bir şekilde dp birimlerinin gerçek yoğunluğa bağlı olarak gerektiği şekilde ölçeklendirilmesi kullanımdaki ekranın. Dp birimlerinin ekran piksellerine dönüştürülmesi şöyledir basit: px = dp * (dpi / 160). Örneğin, 240 dpi bir ekranda, 1 dp 1,5 fiziksel piksele eşittir. Şu durumlarda her zaman dp birimlerini kullanmalısınız Uygulamanızın kullanıcı arayüzünü tanımlamak, kullanıcı arayüzünüzün düzgün görüntülenmesini sağlamak için farklı yoğunluklara sahip elekler.

Birden fazla cihaz türü için Android uygulaması geliştirme konusunda ciddiyseniz, ekran desteği geliştirme belgesini en az bir kez okumuş olmalısınız. Buna ek olarak, belirli bir ekran yapılandırmasına sahip aktif cihazların gerçek sayısını bilmek her zaman iyi bir şeydir.

Yorumlar (5)

dp'nin px'e tam olarak nasıl dönüştüğünü daha ayrıntılı olarak açıklayacağım:

  • Eğer bir mdpi cihazında çalışıyorsa, 150 x 150 px bir görüntü 150 * 150 dp ekran alanı kaplayacaktır.
  • Bir hdpi aygıtında çalışıyorsa, 150 x 150 px bir görüntü 100 * 100 dp ekran alanı kaplayacaktır.
  • Bir xhdpi aygıtında çalışıyorsa, 150x150 px boyutundaki bir görüntü 75 * 75 dp ekran alanı kaplayacaktır.

Diğer şekilde: diyelim ki uygulamanıza bir resim eklemek istiyorsunuz ve bunun 100 * 100 dp kontrolünü doldurması gerekiyor. Desteklenen ekran boyutları için farklı boyutta görüntüler oluşturmanız gerekir:

  • mdpi için 100 * 100 px görüntü
  • hdpi için 150 * 150 px görüntü
  • xhdpi için 200 * 200 px görüntü
Yorumlar (4)