“Px”, “dip”, “dp” ve “sp” arasındaki fark nedir?


5815

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

  • px
  • daldırma
  • dp
  • sp

65
bu android'de px, dip, dp ve sp arasındaki tam farkı kullanmaktır [ developer.android.com/guide/topics/resources/…
NagarjunaReddy

20
Bu şık dönüştürücü bence en iyi şekilde gösteriyor . Photoshop'tan spriteları dışa aktarmak veya düzeninizi fiziksel bir boyut için tasarlamak için de son derece yararlıdır.
Paul Lammertsma



1
Piksel yoğunluklu malzeme
layout/…

Yanıtlar:


5771

Gönderen Android Geliştirici Belgeleri :

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

  2. içinde
    inç - 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 göre bir inçin 1 / 72'si.

  5. dp veya dip
    Yoğunluk- bağımsız Pikseller - ekranın fiziksel yoğunluğuna dayanan soyut bir birim. Bu birimler 160 dpi ekrana göredir, bu nedenle bir dp 160 dpi ekranda bir pikseldir. Dp-piksel oranı ekran yoğunluğu ile değişecektir, ancak doğrudan orantılı olması gerekmeyecektir. Not: "dp", "sp" ile daha tutarlı olsa da derleyici hem "dip" hem de "dp" yi kabul eder.

  6. sp
    Ölçek bağımsız Piksel - bu dp birimi gibidir, ancak kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir. Yazı tipi boyutlarını belirtirken bu birimi kullanmanız önerilir, böylece hem ekran yoğunluğu hem de kullanıcının tercihi için ayarlanırlar.

Gönderen anlama Yoğunluk Kurtuluş 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Daha fazla bilgi Google Tasarım Dokümanları'nda da bulunabilir .


17
onlar aynı şey olmasına rağmen ben her şey daldırma ile iyi çalışırken dp ile ilgili birçok sorun eğilimindedir
DallaRosa

247
Tamamen açık olmayan db / sp hakkında bir not: Bunlar için meydana gelen ölçeklendirme, cihazların gerçek yoğunluğuna (dpi) değil, hangi yoğunluk yoğunluğuna düştüğüne bağlıdır: mevcut kovalar: 120,160,240,320. Bu, önemli ölçüde farklı olan ancak aynı kovaya sahip ekranları işlemede bazı sorunlara neden olabilir.
Fraggle

15
Derleyici hala "daldırma" kabul gibi görünüyor olsa da, belgelere artık "daldırma", sadece "dp", bahsetmiyorum.
Adam Rosenfield

15
@android_developer (yukarıdaki 5 yorum) tam olarak aynı fiziksel uzunluğa dpsahip değildir . (Her ne kadar yakın olsa da.) @ Fraggle'ın kovalama hakkındaki yorumuna bakın. Bunun anlamı, 48dp'nin yaklaşık 8mm (0.3 inç) olacağı, ancak 11 mm'ye kadar değişebileceğidir.
intrepidis

11
Kovalamanın nedeni, geliştiricilerin uygulamalarını farklı yoğunluklarda birkaç cihazda test edebilmeleri ve düzenlerin çok sayıda cihazda aynı görüneceğinden emin olmalarıdır. Bu nedenle, düğmelerin vb. Fiziksel boyutu biraz değişse bile, bir etkinliğin genel görünümü aynı olacaktır.
intrepidis

685

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

Ekran boyutu
Ekranın diyagonal olarak ölçülen gerçek fiziksel boyut. Basitlik açısından, Android tüm gerçek ekran boyutlarını dört genel boyuta gruplandırır: küçük, normal, büyük ve çok büyük.

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

Yönlendirme
Ekranın kullanıcının bakış açısından yönü. Bu, yatay veya dikeydir, yani ekranın en boy oranının sırasıyla geniş veya uzun olduğu anlamına gelir. Varsayılan olarak yalnızca farklı cihazların farklı yönlerde çalıştığını değil, aynı zamanda kullanıcı cihazı döndürdüğünde yönün çalışma zamanında değişebileceğini unutmayın.

Çözünürlük
Ekrandaki toplam fiziksel piksel sayısı. Birden çok ekran için destek eklerken, uygulamalar doğrudan çözünürlükle çalışmaz; uygulamalar, genelleştirilmiş boyut ve yoğunluk gruplarında belirtildiği gibi sadece ekran boyutu ve yoğunluğu ile ilgilenmelidir.

Yoğunluktan bağımsız piksel (dp)
Düzen boyutlarını veya konumunu yoğunluktan bağımsız bir şekilde ifade etmek için UI düzenini tanımlarken kullanmanız gereken sanal piksel birimi. Yoğunluktan bağımsız piksel, 160 dpi ekranda bir fiziksel piksele eşdeğerdir; bu, sistem tarafından "orta" yoğunluk ekranı için varsayılan temel yoğunluktur. Çalışma zamanında, sistem, kullanılan ekranın gerçek yoğunluğuna bağlı olarak, gerekirse dp birimlerinin herhangi bir ölçeklendirmesini şeffaf bir şekilde işler. Ekran piksellere dp birimlerinin dönüşüm basittir: px = dp * (dpi / 160). Örneğin, 240 dpi ekranda, 1 dp 1,5 fiziksel piksele eşittir. Farklı yoğunluklara sahip ekranlarda kullanıcı arayüzünüzün düzgün bir şekilde görüntülenmesini sağlamak için uygulamanızın kullanıcı arayüzünü tanımlarken her zaman dp birimleri kullanmalısınız.

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


41
Bir düğme için dp ve düğme metninin yazı tipi boyutu için sp kullanırsanız, kullanıcı ölçeklemeye başladığında ne olur? Metin büyüyecek, ancak düğme bunu büyüterek de barındıracak mı?
Wytze

11
@Wytze, hayır. Metne uymanın bir sorun olabileceği şeyler için, sadece dip kullanırım, böylece işler taşmaz.
eski

12
@Wytze Ve tam tersine, hem metin hem de içerdiği her şey için sp kullanıyorum. Örneğin, sabit bir boyuta ve içinde bir metne sahip bir düğmem varsa, sp'de düğme boyutunu atarım, böylece gerektiğinde ölçeklenir. Aksi takdirde, kullanıcı metnin boyutunu artırdığı için rahatsız olur ve artmaz. Tabii ki, düzen izin verecek kadar esnek olmalıdır.
Malcolm

2
Tasarımcılarınız metin tabanlı öğelerin sp boyutuna göre ölçeklendirilmesi için yer bırakmazsa, seçeneklerden biri daha dar bir cihaz için hangi düzene gireceğinize geçmek ve her şeyi (DisplayMetrics.scaledDensity / DisplayMetrics) ile eşit olarak ölçeklendirmektir. yoğunluk).
John Mellor

@Sam boş alan olmaması da i18n sırasında sorunlara neden olur
etkinliği azaltmak

347

Ben dp tam olarak px dönüştürmek nasıl daha ayrıntılı olacaktır:

  • Bir mdpi aygıtında çalışıyorsa, 150 x 150 pxgörüntü 150 * 150 dpekran alanı kaplayacaktır.
  • Bir hdpi cihazında çalışıyorsa, 150 x 150 pxgörüntü 100 * 100 dpekran alanını kaplar.
  • Bir xhdpi cihazında çalışıyorsa, 150x150 pxgörüntü 75 * 75 dpekran alanını kaplar.

Diğer bir yol: uygulamanıza bir görüntü eklemek istiyorsunuz ve bir 100 * 100 dpkontrolü doldurmak için buna ihtiyacınız var . Desteklenen ekran boyutları için farklı boyutta görüntüler oluşturmanız gerekir:

  • 100 * 100 px mdpi için resim
  • 150 * 150 px hdpi için görüntü
  • 200 * 200 px xhdpi için resim

2
Nasıl hdpi, ldpi, mdpi vb için piksel hesaplar .. Bu formülü kullandığımızı duydum .. px = dp * (dpi / 160); bana bu formülü plz ile açıklayabilir misin?
Rakesh patanga

@Rakeshpatanga 160 dpi yoğunluğunda, 1 px = 1 dp (fiziksel piksel ve dp soyutlaması aynıdır). Yani, tek bir dp için (1) * (160/160) = 1 veya tam olarak 1 pikselimiz var. 320 dpi'nin daha yüksek yoğunluğunda, tek bir dp (1) * (320/160) = 2 pikseldir ve iki dp (2) * (320/160) = 4 pikseldir.
samis

Aşağıdakileri görmek için bunları tek aralıkta hizalayın: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (virgüllerden sonra satır sonları koyun). | _ | = 1 p i x el.
samis

re "Desteklenen ekran boyutları için farklı boyutta görüntüler oluşturmanız gerekecek:" Buna bağlıdır. İçin küçük yüksek kontrastlı örneğin ikonlar görüntüler, (tabii belli olacak olması) artı oldukça büyük boyutu (çok büyük versiyonları bulanık bakma o) en az en küçük boyutunu oluşturmak akıllıca olacaktır. Ancak simgeler için bile, bir görüntünün daha yüksek yoğunluklarda çeşitli boyutlarda ölçeklenmesine izin verebilirsiniz. Fotoğraflar için doldurmasını istediğiniz görüntüleme alanını belirtin ve cihaz ölçeklendirmesine güvenin.
ToolmakerSteve

286

px - Piksel - ölçek başına nokta ekrandaki gerçek piksellere karşılık gelir.

i - İnç - ekranın fiziksel boyutuna göre.

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

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

dp - Yoğunluktan bağımsız Pikseller - ekranın fiziksel yoğunluğuna dayanan soyut bir birim. Bu birimler 160 dpi ekrana göredir, bu yüzden biri 160 dpi ekranda dpbir pikseldir. Dp-piksel oranı ekran yoğunluğu ile değişecektir, ancak doğrudan orantılı olması gerekmeyecektir. Not: Derleyici her ikisini de kabul eder dipve dpyine dpde daha tutarlıdır sp.

sp - Ölçekten Bağımsız Pikseller - bu dpbirime benzer, ancak kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir. Yazı tipi boyutlarını belirtirken bu birimi kullanmanız önerilir, böylece hem ekran yoğunluğu hem de kullanıcının tercihi için ayarlanır.

Aynı boyutta ancak biri 160 dpi (inç başına nokta, yani inç başına piksel) ekran yoğunluğuna sahip ve diğeri 240 dpi olan iki ekran örneğini ele alalım.

                          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

234

Ayrıca, aşağıdaki kavramlar hakkında net bir anlayışa sahip olmalısınız:

Ekran boyutu:

Ekranın diyagonal olarak ölçülen gerçek fiziksel boyut. Basitlik açısından, Android tüm gerçek ekran boyutlarını dört genel boyutta gruplandırır: küçük, normal, büyük ve çok büyük.

Ekran yoğunluğu:

Ekranın fiziksel bir alanındaki piksel sayısı; genellikle dpi (inç başına nokta sayısı) olarak adlandırılır. Örneğin, "düşük" yoğunluklu bir ekran, belirli bir fiziksel alanda "normal" veya "yüksek" yoğunluklu bir ekranla karşılaştırıldığında daha az piksele sahiptir. Basitlik açısından, Android tüm gerçek ekran yoğunluklarını dört genel yoğunluğa ayırır: düşük, orta, yüksek ve ekstra yüksek.

Oryantasyon:

Ekranın kullanıcının bakış açısından yönlendirilmesi. Bu, yatay veya dikeydir, yani ekranın en boy oranının sırasıyla geniş veya uzun olduğu anlamına gelir. Varsayılan olarak yalnızca farklı cihazların farklı yönlerde çalıştığını değil, aynı zamanda kullanıcı cihazı döndürdüğünde yönün çalışma zamanında değişebileceğini unutmayın.

Çözüm:

Ekrandaki toplam fiziksel piksel sayısı. Birden çok ekran için destek eklerken, uygulamalar doğrudan çözünürlükle çalışmaz; uygulamalar, genelleştirilmiş boyut ve yoğunluk gruplarında belirtildiği gibi sadece ekran boyutu ve yoğunluğu ile ilgilenmelidir.

Yoğunluktan bağımsız piksel (dp):

Düzen boyutlarını veya konumunu yoğunluktan bağımsız bir şekilde ifade etmek için UI düzenini tanımlarken kullanmanız gereken sanal piksel birimi. Yoğunluktan bağımsız piksel, 160 dpi ekranda bir fiziksel piksele eşdeğerdir; bu, sistem tarafından "orta" yoğunluk ekranı için varsayılan temel yoğunluktur. Çalışma zamanında, sistem, kullanılan ekranın gerçek yoğunluğuna bağlı olarak, gerekirse dp birimlerinin herhangi bir ölçeklendirmesini şeffaf bir şekilde işler. Dp birimlerinin ekran piksellerine dönüştürülmesi basittir: px = dp * (dpi / 160). Örneğin, 240 dpi ekranda, 1 dp 1,5 fiziksel piksele eşittir. Farklı yoğunluklara sahip ekranlarda kullanıcı arayüzünüzün düzgün bir şekilde görüntülenmesini sağlamak için uygulamanızın kullanıcı arayüzünü tanımlarken her zaman dp birimleri kullanmalısınız.

Referans: Android geliştiricileri sitesi


Bu, dp birimlerini kullanarak tasarladığınız her şeyin, cihazın piksel yoğunluğuna bakılmaksızın her zaman ekranın aynı yüzdesini alacağı anlamına mı geliyor? Aynı en boy oranları varsayıldığında.
DBIT

199

dpolduğunu dip. Her şey için kullanın (kenar boşluğu, dolgu vb.).

Kullanım spiçin {metin boyutu} sadece.


Farklı ekran yoğunluklarında aynı boyutu elde etmek için Android, bu birimleri çalışma zamanında piksellere dönüştürür, bu nedenle yapmanız gereken zor bir matematik yoktur.


Arasındaki farkı görün px, dpve spfarklı ekran boyutlarına.

Resim açıklamasını buraya girin

Kaynak: Android Programlama: Büyük Nerd Çiftliği Rehberi


144

Ben dönüşümleri yapmak için aşağıdaki formül hesapladık dpiiçin dpvesp resim açıklamasını buraya girin


10
Dpi yerine ppi olmalı
Prateek

142

Tanımlar

px veya dot, fiziksel ekrandaki bir pikseldir .

dpi fiziksel ekranda inç başına pikseldir ve ekranın yoğunluğunu temsil eder.

Android, çeşitli yoğunluklara takma adlar veriyor

  • ldpi (düşük) ~ 120dpi
  • mdpi (orta) ~ 160dpi
  • hdpi (yüksek) ~ 240dpi
    • 2015'teki çoğu cihaz burada
  • xhdpi (çok yüksek) ~ 320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (ekstra-ekstra-yüksek) ~ 480dpi
    • Nexus 5
  • xxxhdpi (ekstra-ekstra-ekstra-yüksek) ~ 640dpi

daldırma veya dp yoğunluktan bağımsız piksellerdir , yani fiziksel yoğunluğa bağlı olarak az çok piksele karşılık gelirler.

  • 1dp = mdpi'de 1 piksel

resim açıklamasını buraya girin

sp veya sip , ölçekden bağımsız bir pikseldir . Büyük Metin seçeneği açıldığında ölçeklendirilir Settings>Accessibility

  • 1sp = 1dp
  • 1sp = Erişilebilir 1.2dp Büyük Metin

Ne kullanılır?

Metin boyutu için sp kullanın .

Diğer her şey için dp kullanın .


129

Kaynak 1

Kaynak 2

Kaynak 3 : (kaynak 3'teki veriler aşağıda verilmiştir)

Bunlar XML'de tanımlanan boyut değerleridir. Bir boyut, bir sayı ve ardından bir ölçü birimi ile belirtilir. Örneğin: 10px, 2in, 5sp. Aşağıdaki ölçü birimleri Android tarafından desteklenmektedir:

dp

Yoğunluktan Bağımsız Pikseller - Ekranın fiziksel yoğunluğuna dayanan soyut bir birim. Bu birimler, 1dp'nin kabaca 1px'e eşit olduğu 160 dpi (inç başına nokta sayısı) ekrana göredir. Daha yüksek yoğunluklu bir ekranda çalışırken, 1dp çizmek için kullanılan piksel sayısı, ekranın dpi'sine uygun bir faktör kadar büyütülür. Benzer şekilde, daha düşük yoğunluklu bir ekrandayken, 1dp için kullanılan piksel sayısı azaltılır. Dp-piksel oranı ekran yoğunluğu ile değişecektir, ancak doğrudan orantılı olması gerekmeyecektir. Dp birimlerini kullanmak (piksel birimleri yerine), mizanpajınızdaki görünüm boyutlarının farklı ekran yoğunlukları için düzgün bir şekilde yeniden boyutlandırılması için basit bir çözümdür. Başka bir deyişle, kullanıcı arayüzü öğelerinizin farklı cihazlardaki gerçek dünya boyutlarına tutarlılık sağlar.

sp

Ölçekten Bağımsız Piksel - Bu dp birimi gibidir, ancak kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir. Yazı tipi boyutlarını belirtirken bu birimi kullanmanız önerilir, böylece hem ekran yoğunluğu hem de kullanıcının tercihi için ayarlanır.

nk

Puanlar - Ekranın fiziksel boyutuna göre bir inçin 1 / 72'si.

px

Pikseller - Ekrandaki gerçek piksellere karşılık gelir. Bu ölçü birimi önerilmez çünkü gerçek gösterim cihazlar arasında değişiklik gösterebilir; her cihaz inç başına farklı sayıda piksele sahip olabilir ve ekranda daha fazla veya daha az toplam piksele sahip olabilir.

aa

Milimetre - Ekranın fiziksel boyutuna göre.

içinde

İnç - Ekranın fiziksel boyutuna göre.

Not: Boyut, name özniteliğinde (XML dosyasının adı değil) sağlanan değer kullanılarak başvurulan basit bir kaynaktır. Bu nedenle, boyut kaynaklarını bir XML dosyasında tek bir öğe altında diğer basit kaynaklarla birleştirebilirsiniz.


9
Ayrıca: bu cevabın katma değeri nedir? Diğer cevaplarda daha önce bahsedilmemiş bir şey yok gibi görünüyor.
laalto

119

Temel olarak pikselin uygulandığı tek zaman bir pikseldir ve ekranda bir bölücü durumunda olduğu gibi tam olarak bir piksel istiyorsanız:

> 160 dpi'de 2-3 piksel elde edebilirsiniz,

> 120 dpi'de 0'a yuvarlar.


getDimensionPixelOffset aşağı yuvarlar, getDimensionPixelSize yukarı yuvarlar.
Eugen Pechanec

102

px

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

dp veya daldırma

Yoğunluktan bağımsız Pikseller - ekranın fiziksel yoğunluğuna dayanan soyut bir birim. Bu birimler 160 dpi ekrana göredir, bu nedenle bir dp 160 dpi ekranda bir pikseldir.

Dp kullanımı:

Yoğunluk bağımsızlığı - Uygulamanız, farklı yoğunluklara sahip ekranlarda görüntülendiğinde kullanıcı arabirimi öğelerinin fiziksel boyutunu (kullanıcının bakış açısından) koruduğunda “yoğunluk bağımsızlığı” elde eder. (ie) Görüntü farklı ekran türlerinde aynı boyutta (büyütülmüş veya küçültülmemiş) görünmelidir.

sp

Ölçekten bağımsız Pikseller - bu dp birimi gibidir, ancak kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir.

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


98

Px & dp arasındaki ilişki nedir?

Yoğunluktan bağımsız piksel (dp)

Düzen boyutlarını veya konumunu yoğunluktan bağımsız bir şekilde ifade etmek için UI düzenini tanımlarken kullanmanız gereken sanal piksel birimi. Yukarıda tarif edildiği gibi, yoğunluktan bağımsız piksel, 160 dpi'lık bir ekranda bir fiziksel piksele eşdeğerdir; bu, sistem tarafından bir "orta" yoğunluklu elek için varsayılan temel yoğunluktur. Çalışma zamanında, sistem, kullanılan ekranın gerçek yoğunluğuna bağlı olarak, gerekirse dp birimlerinin herhangi bir ölçeklendirmesini şeffaf bir şekilde işler. Dp birimlerinin ekran piksellerine dönüştürülmesi basittir:

px = dp * (dpi / 160).

Örneğin, 240 dpi ekranda, 1 dp 1,5 fiziksel piksele eşittir. Farklı yoğunluklara sahip ekranlarda kullanıcı arayüzünüzün düzgün bir şekilde görüntülenmesini sağlamak için uygulamanızın kullanıcı arayüzünü tanımlarken her zaman dp birimleri kullanmalısınız.

Pikselden dp'ye ve bunun tersini anlamak çok önemlidir (özellikle yaratıcı ekibe kesin dp değerleri vermek için)

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
  • Reklam öğesi ekibinden tüm piksel değerlerini çift sayılarla almaya çalışın. Aksi takdirde 0,5 ile çarpılırken hassasiyet kaybı olur.

px

Yukarıda açıklanmıştır. Düzen dosyalarında kaçınmaya çalışın. Ancak, pikselin gerekli olduğu bazı durumlar vardır. örneğin, ListView ayırıcı satırı. px, tüm ekran çözünürlükleri için ayırıcı olarak bir piksel çizgisi vermek için burada daha iyidir.

sp

Yazı tipi boyutları için sp kullanın. Ardından, aygıt yazı tipi boyutu değiştiğinde (uygulama, Görüntü -> Aygıttaki Yazı Tipleri) yalnızca uygulamanın içindeki yazı tipi değişecektir. Uygulamanın içinde statik boyutlu bir yazı tipi tutmak istiyorsanız, yazı tipi boyutunu dp olarak verebilirsiniz. Böyle bir durumda asla değişmeyecek. Geliştiriciler, bazı belirli ekranlar için böyle bir gereksinim alabilirler, bunun için geliştiriciler sp yerine dp kullanabilirler. Diğer tüm durumlarda sp önerilir.


90

Aşağıdaki resim arasındaki pxve dpaşağıdaki resim arasındaki farkı görebilirsiniz ve ayrıca farklı ekranlarda aynı fiziksel boyutları garanti edemediğini pxve dpsağlayamadığını da görebilirsiniz .

resim açıklamasını buraya girin


3
@EnesBattal, dp akut bir fiziksel boyut olmadığı için yaklaşık bir değer olduğunu düşünüyorum. CapTech'ten alıntı: "dp - Bu yoğunluktan bağımsız bir birimdir, ancak tek bir" dp "nin fiziksel boyutu her ekran yoğunluğunda yaklaşık olarak aynıdır. Bir inçte yaklaşık 160" dp "vardır. “dp” yi 160 dpi'deki piksel sayısına dönüştürmek için uygulanır. Tek bir “dp” nin çevirdiği piksel sayısı, ekran yoğunluğundaki piksele ve cihazın düştüğü yoğunluk grubuna bağlı olarak değişir. içine."
Zephyr

3
@RuchirBaronia, bence DP veya DIP hala apk içinde var, çünkü apk henüz ne tür ekran yoğunluğu ile çalışacağını bilmiyor, bu yüzden cihaz bağımsızlığı hala korunmalı.
Zephyr

79

Metin ve görünüm boyutu ile ilgili her şey spveya kullanmalıdır pt. Oysa kontrollerin boyutu, düzenleri vb. İle ilgili her şey kullanılmalıdır dp.

Her iki kullanabilir dpve diponun yerlerde.


69

Ben sadece dp kullanırdım.

Yazı tipi boyutları için "sp" kullanmakla ilgili çok fazla konuşma var ve bu noktayı takdir ederken, tasarım açısından yapılacak doğru şey olduğunu düşünmüyorum. Kullanıcının bazı sakat yazı tipi boyutu seçimi varsa tasarımınızı kırabilir ve kullanıcı kendi yaşam seçimlerini değil , uygulamayı suçlar.

Ayrıca, 160 dpi'lik bir tablette bir sp-font uygulaması alırsanız, her şeyin ölçeklendiğini göreceksiniz ... ancak yazı tipiniz, karşılaştırıldığında küçük görünecek. İyi bir görünüm değil.

"Sp" yazı tipleri fikri iyi bir kalbe sahip olsa da, kötü bir fikirdir. Her şey için dp ile sopa.


1
Uygulanan font ölçek faktörünün spbir faktör olduğunu biliyorsunuz , değil mi? Etkileyen her şey dpde etkileyecektir sp. Bununla birlikte, mizanpajınız çok dar ve daha büyük boyutlar dpyerine yazı tipi boyutlarını belirtmek yine de tercih edilir sp- kullanıcının tamamen dağınık bir düzenden istediklerinden daha küçük metinlere sahip olmak daha iyidir. Ancak ilk etapta her zaman kullanıcının yazı tipi boyutu tercihine saygı göstermeye çalışmalısınız - en büyük ayar bile bu kadar büyük değildir.
Karu

67

sp = ölçek bağımsız piksel

dp = dip = yoğunluktan bağımsız pikseller

dpi = inç başına nokta

Sp kullanmaktan kaçınmalıyız .

Birden çok ekranı desteklemek için dp kullanmalıyız .

Android farklı ekran çözünürlüklerini destekler

  • ldpi (düşük) ~ 120 dpi
  • mdpi (orta) ~ 160 dpi
  • hdpi (yüksek) ~ 240 dpi
  • xhdpi (çok yüksek) ~ 320 dpi
  • xxhdpi (ekstra-ekstra-yüksek) ~ 480 dpi
  • xxxhdpi (ekstra-ekstra-ekstra-yüksek) ~ 640 dpi

120 dp ldpi aygıtında 1 inç boyutunda 120 piksel bulunur.

Diğer yoğunluklar için de aynısı ...

Yazılım mühendisleri olarak şu dönüşüm formülünü kullanmalıyız:

piksel = dp * (yoğunluk / 160)

240 dpi cihazının 1 dp değeri = 1 * (240/160) = 3/2 = 1,5 piksel olacaktır.

480 dpi cihazının 1 dp değeri = 1 * (480/160) = 3 piksel olacaktır.

Bu 1.5 ve 3 piksel bilgisini kullanarak, bir yazılım mühendisi farklı yoğunluklara yönelik düzenler tasarlayabilir.

Herhangi bir cihazın ekran parametrelerini kontrol etmek için:

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

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();

Anlamak için çok iyi bir öğretici: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
Kushal

5
"Sp kullanmaktan kaçınmalıyız" Neden? Yazı tipi boyutları ile uğraşırken sp kullanmalısınız, çünkü kullanıcının tercih ettiği metin boyutunu, developer.android.com/training/multiscreen/screendensities.html
ci_

Düzen perspektifine göre cevap verdim .. Lütfen sağladığınız bağlantıyı okuyun "bu nedenle metin boyutunu tanımlarken bu ölçü birimini kullanmalısınız (ancak düzen boyutları için asla değil).
Kushal

Soru "Android'de px, dp, dip ve sp arasındaki fark?" Cevabınız "sp kullanmaktan kaçınmalıyız" dedi. Hiçbir yerde "düzen perspektif" söz yoktu.
ci_

Evet .. dp ve dip aynı ... birbirinin yerine kullanılır ... Cevabım sorunuzu çözüyor mu?
Kushal

61

Arasındaki fark dpve sp"olarak belirtilen birimler kullanıcının yazı tipi boyutu tercihi resmi belgelere kopyalanan cevapları tarafından" değiştirerek çalışma zamanında görülebilir Settings->Accessibility->Large Textseçeneği.

Large Textseçeneği metni 1.3zamandan daha büyük hale getirir.

private static final float LARGE_FONT_SCALE = 1.3f;

Bu elbette satıcılara bağımlı olabilir, çünkü paketler / uygulamalar / Ayarlar'da yatar .


52

dpi -

  • İnç başına nokta
  • Ekranın piksel yoğunluğunu ölçme.

piksel - piksel

  • Ekran piksellerini eşlemek için

pt - puanlar

  • Fiziksel ekran boyutuna göre bir inçin yaklaşık 1 / 72'si.

inç cinsinden - fiziksel ekran boyutuna göre (1 inç = 2,54 cm).

mm-milimetre - fiziksel ekran boyutuna göre.

sp - ölçek bağımsız piksel.

  • Kullanıcının yazı tipi boyutu tercihine göre.
  • Yazı tipi "sp" de olmalıdır.

daldırma -

  • dip == dp
  • Yoğunluktan bağımsız piksel.
  • Ekran Yoğunluğuna göre değişir.
  • 160 dpi ekranında, 1 dp = 1 piksel.
  • Metin yazı tipi boyutu dışında dp kullanın.

Standart olarak dp ve sp kullanılır. yazı tipi boyutu için sp ve diğer her şey için dp.

Birimlerin dönüştürülmesi için formül:

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  

Belgelere göre Derleyici hem "dip" hem de "dp" yi kabul eder, ancak "dp" "sp" ile daha tutarlıdır
Arunendra

46

İşte Android tarafından kullanılan formül:

px = dp * (dpi / 160)

Burada dpi, aşağıdaki ekran yoğunluklarından biridir. Tüm olası yoğunlukların bir listesi için buraya gidin

"DENSITY_ *" sabitlerini tanımlar.

  • ldpi (düşük) ~ 120dpi
  • mdpi (orta) ~ 160dpi
  • hdpi (yüksek) ~ 240dpi
  • xhdpi (çok yüksek) ~ 320dpi
  • xxhdpi (ekstra-ekstra-yüksek) ~ 480dpi
  • xxxhdpi (ekstra-ekstra-ekstra-yüksek) ~ 640dpi

Buradan alındı .

Bu, ekran dpi'nizi biliyorsanız, px ve dp arasında çeviri yaparken karışıklığı çözecektir.

Diyelim ki bir hdpi ekran için 60 dp görüntü istiyorsanız, 60 dp fiziksel piksel boyutu:

px = 60 * (240 / 160)

45

Ekran Boyutu içinde Androidkategoriler halinde gruplandırıldı small, medium, large, extra large, double-extrave triple-extra. Ekran yoğunluğu, ekranın bir alanı içindeki (inç gibi) piksel miktarıdır. Genellikle inç başına nokta (dpi) olarak ölçülür. Ekran yoğunluğu düşük, orta, yüksek ve ekstra yüksek olarak gruplandırılmıştır. Çözünürlük, ekrandaki toplam piksel sayısıdır.

  • dp: Yoğunluktan Bağımsız Piksel, ekran yoğunluğuna göre değişir. 160 dpi ekranında, 1 dp = 1 piksel. Yazı tipi boyutu dışında her zaman dp kullanın.
  • dip: dip == dp. Daha önceki Android sürümlerinde dip kullanıldı ve daha sonra dp olarak değiştirildi.
  • sp: Kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilen Bağımsız Piksel'i ölçeklendirir. Yazı tipleri sp.
  • px: ekran pikseli ile eşleşen normal standart pikselimiz.
  • inç : fiziksel ekran boyutuna göre.
  • mm: fiziksel ekran boyutuna göre milimetre.
  • pt: fiziksel ekran boyutuna göre bir inçin 1 / 72'si.

Birimler Arası Dönüşüm Formülü

 px = dp * (dpi / 160)

cihazda dp'den piksel'e

Aşağıdaki örnek daha iyi anlamanıza yardımcı olabilir. Ölçekleme, 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) ve 640 (xxxhdpi) boyutlarına göre yapılır. Google'ın tasarım için önerilen oranı ldpi: mdpi: hdpi: xhdpi: xxhdpi için 3: 4: 6: 8: 12'dir.

150 piksel X 150 piksel boyutunda bir resim,

  • 150 dp X 150 dp ekran alanı
  • HDP'de 100 dp X 100 dp ekran alanı
  • Xhdpi'de 75 dp X 75 dp ekran alanı

Tüm Android cihazlarda tek tip bir kullanıcı arayüzü tasarımına sahip olmak istediğinizde görüntü boyutlarınızı ve diğer boyutlarınızı düzeltmek için aşağıdaki DPI hesap makinesini kullanabilirsiniz.

Java'da DPI Hesaplayıcısı

/*
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);        
   }
}

Daha Fazla Bilgi aşağıdaki bağlantıya bakın.

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


45

Lütfen topluluk wiki'sinin yanıtını okuyun. Aşağıda, yukarıdaki cevaplara ek olarak dikkate alınması gereken bazı bilgiler verilmiştir. Çoğu Android geliştiricisi uygulama geliştirirken bunu kaçırıyor, bu yüzden bu noktaları ekliyorum.

sp = ölçek bağımsız piksel

dp = yoğunluktan bağımsız pikseller

dpi = yoğunluk pikselleri

Yukarıdaki cevaplardan geçtim ... onları tam olarak doğru bulmuyorum. metin boyutu için sp, düzen sınırları için dp - standart. Ancak dikkatsizce kullanılırsa metin boyutu için sp düzeni bozar , cihazların çoğunda .

sp aygıtın metin boyutunu alırken, dp aygıt yoğunluğu standardınınkini alır (bir aygıtta asla değişmez) 100sp metnin, aygıtta ayarlanan yazı tipi boyutuna bağlı olarak ekranın% 80'ini veya ekranın% 100'ünü kaplayabildiğini varsayalım

resim açıklamasını buraya girin

Ayrıca düzen sınırları için sp kullanabilirsiniz, işe yarayacak :) Tüm metin için standart uygulama kullanımı sp yok

UX dikkate alınarak metin boyutu için sp ve dp kullanın.

  • Araç çubuğundaki metin için sp kullanmayın (dp ile farklı ekran boyutları için kullanılabilir android dimens kullanabilir)
  • Küçük sınırlı düğmeler, çok daha küçük metinler vb. Metinler için sp kullanmayın

Bazı insanlar daha okunabilirlik için telefonlarında büyük YAZI TİPİ boyutu kullanır, bu da küçük sabit kodlu metin vermek bir UX sorunu olacaktır. Sp'yi gerektiği yere metin koyun, ancak kullanıcı ayarlarını değiştirdiğinde mizanpajı bozmayacağından emin olun.

Benzer şekilde, tüm boyutları destekleyen tek bir uygulamanız varsa, xxxhdpi varlıklarının eklenmesi uygulama boyutunu çok artırır. Ama şimdi xxxhdpi telefonları yaygındır, bu yüzden yan çubuk, araç çubuğu ve alt çubuktaki simgeler için en azından xxxhdpi varlıklarını dahil etmeliyiz. Tüm ekran boyutları için düzgün ve daha kaliteli görüntüler elde etmek için vektör görüntülerine geçmek daha iyidir.

Kişilerin telefonlarında özel yazı tipi kullandığını da unutmayın. Bu nedenle, yazı tipinin olmaması boşluk ve diğer tüm sorunlara neden olabilir. Diyelim ki özel bir yazı tipi için metin boyutu 12sp, varsayılan yazı tipinden fazla piksel alabilir.

Android için screendensities ve temel yoğunluk detayları için google geliştirici sitesine bakın. https://developer.android.com/training/multiscreen/screendensities


43
  • px - CSS, JavaScript vb. öğelerde kullanılanla aynı piksel.
  • sp - ölçeğinden bağımsız pikseller
  • dip - yoğunluktan bağımsız pikseller

Normalde sp yazı tipi boyutları için kullanılırken, daldırma kullanılır (dp olarak da bilinir).


39

Farklı ekran çözünürlükleri için Android uygulamaları kullanıcı arayüzü tasarlama hakkında iyi bir makaleyle karşılaştım ve sadece bu alanda arama yapan biri için onu burada bırakmak istiyorum. Evet, bunun Google dokümanlarında bir şekilde tanımlandığını biliyorum (ve yukarıdaki yayınlarda bahsedildi), bunu okudum ama benim için iyi değildi (evet, çok aptal olabilirim). Farklı ekran boyutlarını kullanabilen düzenlerin nasıl tasarlanacağı benim için belirsiz kaldı. Farklı ekranlar için "esnek" bir UI düzeni uygulamam gerektiğinde DP konseptinden ve benzerlerinden nefret ediyorum. (Hey iOS geliştiricileri - evet, bu doğru Storyboard konsepti).

Android'in UI kavramı kötü değil, ancak ne yazık ki iOS Storyboard özelliklerinden yoksun. Android'de esnek kullanıcı arayüzü tasarlamak kolay değildir (en iyi ihtimalle).

Farklı ekran boyutları için düzenler yapmak için Android'de ne yapacağımı anlamama yardımcı olan makale şöyle:

JMSTUDIO Blogu: - Android Uygulaması Ekran Boyutuna Karar Verin

Farklı Ekran Boyutu için Android Uygulamaları için Kullanıcı Arabirimi Nasıl Tasarlanır

Farklı ekran boyutları için bir uygulama kullanıcı arayüzü tasarlamak için, ilk tasarımımız her ekran boyutu için gereken minimum alanı karşılamalıdır. Android, her genelleştirilmiş ekran türü için minimum boyutu (dp cinsinden) tanımlar. İşte bir Android ekran boyutu kılavuzu. Dp cinsinden Android için Minimum Ekran Boyutu Ekran boyutunu dp olarak aldığımızda, Android uygulaması kullanıcı arayüzünü tasarlamak bizim için yeterli değil. Her ekran boyutu için, her yoğunluk için grafik ve bitmap görüntüler hazırlamamız gerekir. İşte bir Android ekran yoğunluğu kılavuzu. Android Yoğunluk Kılavuzu (dpi)

Kolay hesaplama için, dört genel yoğunluk arasındaki 3: 4: 6: 8 ölçeklendirme oranını takip edebiliriz. Ldpi cihazı için 36 × 36 piksel bir resim oluşturursak, kalan yoğunlukların resim boyutu mdpi için 48 × 48, hdpi için 72 × 72 ve xhdpi için 96 × 96 olacaktır.

Photoshop'ta Android Uygulamaları Kullanıcı Arayüzü Nasıl Tasarlanır

Birçok tasarımcı, yoğunluktan bağımsız birim, dp nedeniyle photoshop veya diğer piksel tabanlı grafik tasarım araçlarında Android uygulaması kullanıcı arayüzü tasarlamakta sorun yaşıyor. Tasarımcılar dp'yi piksele nasıl eşleştireceklerini bilmiyorlar. Google ayrıca, dp ve piksel çevirisi için temel bir formül verse de, onlar için net bir Android UI tasarım kılavuzu vermez.

Android'in tanımı olarak, 160 dpi cihazının (mdpi) altında 1pd 1px'e eşittir. Bu nedenle, mdpi yoğunluğuna sahip xlarge Android cihazı için bir Android uygulaması tasarlamak istiyoruz, pikseldeki UI boyutumuzu 960 piksel genişlik ve 720px yükseklik olarak tanımlayabiliriz; Aynı eşleme kuralını uygulayın, Android App ekran boyutu UI tasarım yönergesini takip edebiliriz:

Piksel Kılavuzunda Android Uygulaması Ekran Boyutu

EKLENDİ : "Esnek" kullanıcı arayüzüyle de ilgileniyorsanız , şu kütüphaneye göz atın: Yeni boyut birimi - sdp (ölçeklenebilir dp) sağlayan bir Android SDK. Bu boyut birimi ekran boyutuyla ölçeklendirilir (bu, SDPkitaplık hakkında bir yanıtta da belirtilmiştir )

ADDED2 Google nihayet iOS Storeboard UI kavramının kullanışlılığını anladı ve burada ConstraintLayoutAndroid dünyası için geçerli: ConstraintLayout ile Duyarlı bir UI oluşturun


32

1) dp: (density independent pixels)

Ekran çözünürlüğü arttıkça (inç başına daha fazla nokta / piksel olduğunda) bir dp biriminde temsil edilen piksel sayısı artacaktır. Tersine, daha düşük çözünürlüğe sahip cihazlarda, dp biriminde gösterilen piksel sayısı azalır. Bu göreceli bir birim olduğundan, karşılaştırılacak bir taban çizgisine sahip olması gerekir. Bu taban çizgisi 160 dpi bir ekrandır. Bu denklemdir:px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Bu birim, kullanıcının yazı tipi boyutu tercihinin yanı sıra ekran dpi'sine (dp'ye benzer) göre ölçeklenir.


3) px: (pixels)

Ekrandaki gerçek pikseller veya noktalar.


Daha fazla ayrıntı için ziyaret edebilirsiniz

Android Geliştirici Kılavuzu> Boyut
Android Geliştirici Kılavuzu> Ekranlar


29

Ekran boyutu Android'de kategoriye ayrılır edilir ldpi, mdpi, hdpi, xhdpi, xxhdpive xxxhdpi. Ekran yoğunluğu , ekranın bir alanı içindeki (inç gibi) piksel miktarıdır. Genellikle inç başına nokta ( dpi) cinsinden ölçülür .

PX(Pixels):

  • ekran pikseli ile eşleşen normal standart pikselimizdir. pxmutlak piksel içindir. Bu, genişlik veya yükseklik için mutlak piksel cinsinden vermek istiyorsanız kullanılır. Tavsiye edilmez.

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

  • dip == dp. Önceki Android sürümlerinde dip kullanıldı ve daha sonra olarak değiştirildi dp. Bu bir alternatif px.

  • Genellikle pxmutlak değer olduğu için asla kullanmayız . pxGenişliği veya yüksekliği ayarlamak için kullanıyorsanız ve bu uygulama farklı ekran boyutuna sahip cihazlara indiriliyorsa, bu görünüm ekran orijinal boyutuna göre uzatılmaz.

  • dpyerine kullanılması şiddetle tavsiye edilir px. dpEkran boyutlarına göre dinamik olarak büyümek ve daralmak için genişlik ve yükseklikten bahsetmek istiyorsanız kullanın .

  • Eğer verirsek dp/dip, android piksel boyutunu 160 piksel boyutlu ekran temelinde otomatik olarak hesaplar.

SP(Scale independent pixels):

  • kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir. Yazı tipleri kullanmalıdır sp.

  • çeşitli ekran boyutlarına uyacak yazı tipi boyutlarından bahsederken kullanın sp. Bu benzer dpyararlanabileceğinizi spdinamik ekran boyutlarına göre yazı tipi boyutlarının büyümesine ve küçültmek için özellikle

Android Belgeleri diyor:

boyutları belirtirken daima dpveya spbirimlerini kullanın . A dp, 160'da bir pikselin fiziksel boyutuna karşılık gelen yoğunluktan bağımsız bir pikseldir dpi. An spaynı temel birimdir, ancak kullanıcının tercih ettiği metin boyutuna göre ölçeklendirilir (ölçekden bağımsız bir pikseldir), bu nedenle metin boyutunu tanımlarken bu ölçüm birimini kullanmalısınız


21

Bir cep telefonunun ekranı piksel (px) olarak bilinen binlerce küçük noktadan oluşur . Bir piksel, resmi yapmaya giden en küçük öğedir. Bir resim veya ifadeyi oluşturmak için piksel sayısı arttıkça, keskinleşir ve akıllı telefon ekranını daha kolay okunabilir hale getirir.

Ekran çözünürlüğü, ekrandaki piksel sayısı olarak ölçülür. Ekran çözünürlüğü, bir cihaz satın alırken yaygın olarak kullanılan bir özelliktir, ancak ekranları piksel cinsinden düşünmek, bir dokunmatik cihaz için gerçekten önemli olan fiziksel boyut kavramını göz ardı ettiği için Android için tasarım yaparken aslında kullanışlı değildir.

Yoğunluktan bağımsız piksel (dp veya dip) , hedef cihazın çözünürlüğü veya yoğunluğu ne olursa olsun tasarımcının beklenen bir şekilde görünen varlıklar oluşturmasını sağlar.

Yoğunluktan bağımsız bir piksel (dp veya daldırma), taban yoğunluğunda bir piksele veya 160 dpi'ye (inç başına nokta) eşittir.

1 piksel / 1dp = 160 dpi / 160 dpi

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

nerede,

dpi inç başına nokta

Yani, 320 dpi'de 1 dp 2 piksele eşittir.

formül

px / dp = dpi / 160dpi

İnç başına nokta (dpi), bir görüntüleme ekranındaki netliğin (yani aydınlatılan noktaların yoğunluğunun) bir ölçüsüdür. Belirli bir resim çözünürlüğü için inç başına nokta sayısı, aynı sayıda piksel farklı bir alana yayıldığından toplam ekran boyutuna göre değişir.

Yoğunluktan bağımsız piksellerle çalışmak, aynı piksel çözünürlüğüne, ancak farklı miktarda alana sahip iki cihazınızın olduğu bir durumla başa çıkmamıza yardımcı olur. Bir durumda, bir tabletin ve telefonun sırasıyla 1280 x 800 piksel (160 dpi) ve 800 x 1280 piksel (320 dpi) piksel çözünürlüğüne sahip olduğunu varsayalım.

Şimdi bir tablet temel yoğunlukta (160 dpi) olduğu için fiziksel ve yoğunluktan bağımsız piksel boyutları aynıdır, 1280 x 800. Diğer taraftan telefon daha yüksek piksel yoğunluğuna sahiptir, bu nedenle fiziksel olarak yoğunluktan bağımsız piksel sayısının yarısı kadardır piksel. Yani bir telefonda 400 x 640 yoğunluk bağımsız piksel var. Böylece yoğunluktan bağımsız bir piksel kullanmak, tabletin telefondan çok daha fazla alana sahip olduğunu zihinsel olarak resmetmeyi kolaylaştırır.

Benzer şekilde, benzer ekran boyutuna sahip ancak farklı piksel yoğunluğuna sahip iki cihazınız varsa, biri 800 x 1280 piksel (320 dpi), diğeri 400 x 640 piksel (160 dpi) ise, tam olarak tanımlamamız gerekmez varlıkları her iki cihaz için aynı olan yoğunluktan bağımsız piksel cinsinden ölçebildiğimiz için bu iki cihaz için farklı düzenler.

800 x 1280 piksel (320dpi) = 400 x 640 yoğunluktan bağımsız piksel (dp)

400 x 640 piksel (160 dpi) = 400 x 640 yoğunluktan bağımsız piksel (dp)

Ölçek bağımsız pikselleri (sp) yazı tipi boyutu için tercih edilen birimdir. Erişilebilirlik amacıyla Android, kullanıcıların cihazlarının yazı tipi boyutunu özelleştirmesine olanak tanır. Metin okumada sorun yaşayan kullanıcılar cihazlarının yazı tipi boyutunu artırabilir. Bu seçeneği normalde yazı tipi boyutunun altındaki telefonunuzdaki veya tabletinizdeki ekran ayarında bulabilirsiniz. Genellikle erişilebilirlik ayarlarından da erişilebilir.

Ölçek bağımsız piksellerde, aygıtın yazı tipi boyutu normal veya% 100 olduğunda 16 sp, 16 dp ile tamamen aynıdır. Ancak cihazın yazı tipi boyutu büyük olduğunda, örneğin% 125, 16 sp 20 dp veya 1,25 çarpı 16'ya dönüşür.

Yazı tipi boyutu için birim olarak dp kullanırsanız, kullanıcının aygıtın yazı tipi boyutunu özelleştirmesine bakılmaksızın bu metin parçasının belirli bir fiziksel boyutu vardır. Sp birimlerini kullanmak, görme bozukluğu olan insanlar için daha iyi bir deneyim sağlayacaktır.

Referans : Udacity , Google


19

sp: ölçek bağımsız piksel

Metinle birlikte kullanmalısınız çünkü cihaz tarafından kullanıcı tarafından kullanılan yazı tipi boyutuna göre otomatik olarak ölçeklendirilir.

px: piksel veya resim öğesi ekrandaki tek noktadır


19

Piksel yoğunluğu

Ekran piksel yoğunluğu ve çözünürlüğü platforma bağlı olarak değişir. Cihazdan bağımsız pikseller ve ölçeklenebilir pikseller, bir tasarımı platformlar arasında barındırmak için esnek bir yol sağlayan birimlerdir.

Piksel yoğunluğunu hesaplama

İnç içine sığacak piksel sayısına piksel yoğunluğu denir. Yüksek yoğunluklu ekranların inç başına düşük yoğunluklu olanlardan daha fazla pikseli vardır ....

İnç içine sığacak piksel sayısına piksel yoğunluğu denir. Yüksek yoğunluklu ekranların inç başına düşük yoğunluklu olanlardan daha fazla pikseli vardır. Sonuç olarak, aynı piksel boyutlarındaki UI öğeleri düşük yoğunluklu ekranlarda daha büyük, yüksek yoğunluklu ekranlarda daha küçük görünür.

Ekran yoğunluğunu hesaplamak için bu denklemi kullanabilirsiniz:

Ekran yoğunluğu = Ekran genişliği (veya yüksekliği) piksel / Ekran genişliği (veya yüksekliği) inç

Yüksek yoğunluklu ve düşük yoğunluklu ekranlar

Yoğunluk bağımsızlığı

Ekran piksel yoğunluğu ve çözünürlüğü platforma bağlı olarak değişir. Cihazdan bağımsız pikseller ve ölçeklenebilir pikseller, bir tasarımı platformlar arasında barındırmak için esnek bir yol sağlayan birimlerdir.

Piksel yoğunluk bir inç uyması piksel sayısını hesaplamak olarak adlandırılır piksel yoğunluğu . Yüksek yoğunluklu ekranların inç başına düşük yoğunluklu olanlardan daha fazla pikseli vardır ....

Yoğunluk bağımsızlığı , farklı yoğunluklara sahip ekranlarda UI öğelerinin düzgün bir şekilde gösterilmesini ifade eder.

Dp (" dips " olarak telaffuz edilir) olarak yazılan yoğunluktan bağımsız pikseller , herhangi bir ekranda aynı boyutlara sahip olacak şekilde ölçeklenen esnek birimlerdir. Malzeme kullanıcı arayüzleri, öğeleri farklı yoğunluklara sahip ekranlarda tutarlı bir şekilde görüntülemek için yoğunluktan bağımsız pikseller kullanır.

  1. Yoğunluk bağımsızlığı ile gösterilen düşük yoğunluklu ekran
  2. Yoğunluk bağımsızlığı ile görüntülenen yüksek yoğunluklu ekran

Metnin tamamını oku https://material.io/design/layout/pixel-density.html


16

Pikseller (piksel) - ekrandaki gerçek piksellere karşılık gelir. Bu, genişlik veya yükseklik için mutlak piksel cinsinden vermek istiyorsanız kullanılır.

Yoğunluktan bağımsız Piksel (dp veya dip) - ekranın fiziksel yoğunluğuna dayanan soyut bir birim. Bu birimler 160 dpi ekrana göredir, bu nedenle bir dp 160 dpi ekranda bir pikseldir. Dp-piksel oranı ekran yoğunluğu ile değişecektir, ancak doğrudan orantılı olması gerekmeyecektir. Not: “dp” “sp” ile daha tutarlı olsa da derleyici hem “dip” hem de “dp” yi kabul eder.

Ölçekten bağımsız Piksel (sp) - bu dp birimi gibidir, ancak kullanıcının yazı tipi boyutu tercihine göre ölçeklendirilir. Yazı tipi boyutlarını belirtirken bu birimi kullanmanız önerilir, böylece hem ekran yoğunluğu hem de kullanıcının tercihi için ayarlanır.

Her zaman yalnızca dp ve sp kullanın. yazı tipi boyutları için sp ve diğer her şey için dp. Kullanıcı arayüzünü farklı yoğunluklara sahip Android cihazlar için uyumlu hale getirecektir. Piksel ve dp hakkında daha fazla bilgiyi https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp- adresinden edinebilirsiniz.

Kaynak url: - http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/


15

Anlamak için kolay bir yol sağlamak istiyorum dp. Aslında bence dpanlaması en kolay olanı. dpsadece fiziksel uzunluk birimidir. mmVeya ile aynı boyuttadır inch. Bize yazmak için Sadece uygun olur 50dp, 60dpyerine 50/160 inchya 60/160 inchtek nedeni, dpsadece bir 1/160 inchekran boyutu veya çözünürlüğü ne olursa olsun.

Tek sorun, bazı ekranların android dpi'sinin doğru olmamasıdır. Örneğin, 160 dpi olarak sınıflandırılan bir ekran gerçekten 170 dpi'ye sahip olabilir. Yani hesaplama sonucu dpbulanık. Yaklaşık olarak aynı olmalıdır 1/160 inch.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.