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

tarafından oluşturulan soru Mon, Dec 3, 2018 12:00 AM

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

  • px
  • daldırma
  • dp
  • sp
5560
  1. bu android px, dip, dp ve sp arasındaki tam farkı kullanmaktadır [ developer.android.com/rehber /konular /kaynaklar /...
    2012-05-25 09: 34: 20Z
  2. Bu şık dönüştürücü bunu en iyi şekilde gösterir , bence. Ayrıca, Photoshop'tan sprite dışa aktarırken veya düzeninizi fiziksel bir boyut için tasarlarken de son derece kullanışlıdır.
    2014-07-01 09: 28: 04Z
  3. Google Tasarım'daki yeni açıklama Birimler ve ölçümler
    2015-04-27 11: 31: 32Z
  4. 2017-07-15 10: 40: 21Z
  5. 2017-09-13 07: 41: 50Z
30 Yanıtlar                              30                         

Android Geliştirici Dokümantasyonundan :

  1.   

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

  2.   

    içinde
    ekranın fiziksel boyutuna bağlı olarak İnç -
      1 İnç = 2,54 santimetre

  3.   

    mm
    Milimetre - ekranın fiziksel boyutuna bağlı olarak.

  4.   

    pt
    Puanlar - ekranın fiziksel boyutuna göre bir inçlik 1/72.

  5.   

    dp veya dip

    Yoğunluk - bağımsız Piksel - ekranın fiziksel yoğunluğunu temel alan soyut bir birim. Bu birimler 160'a göre       dpi ekran, bir dp 160 dpi ekranda bir pikseldir. Oranı       dp-to-piksel ekran yoğunluğu ile değişecek, ancak mutlaka       doğru orantılı olarak. Not: Derleyici hem "dip" hem de       "dp", "dp", "sp" ile daha tutarlı olmasına rağmen.

  6.   

    sp
    Ölçekli - bağımsız Pikseller - bu dp birimi gibidir, ancak kullanıcının yazı tipi boyutu tercihi tarafından da ölçeklenir. Sana tavsiye edilir       yazı tipi boyutlarını belirlerken bu birimi kullanın, böylece       hem ekran yoğunluğu hem de kullanıcı tercihi için.

Android'de Yoğunluk Bağımsızlığını Anlama 'dan:

 
+----------------+----------------+---------------+-------------------------------+
| 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 bilgiyi Google Tasarım Dokümanları .

    
5552
2018-12-03 05: 07: 41Z
  1. aynı şey olsalar da, her şey dipte iyi çalışırken dp ile ilgili birçok sorun yaşama eğilimindeyim
    2011-07-04 06: 07: 31Z
  2. db /sp hakkında tamamen açık olmayan bir not: Bunlar için yapılan ölçeklendirme, aygıtların gerçek yoğunluğuna (dpi) değil, "kovaya" göre değişir içine düştüğü yoğunlukların sayısı: mevcut kovalar: 120,160,240,320. Bu, önemli ölçüde farklı olan ancak aynı şekilde kovalanan ekranları işlemekte bazı sorunlara neden olabilir.
    2011-10-29 04: 10: 05Z
  3. Belgelerin artık "dip" ten bahsetmediğine dikkat edin, derleyici hala "dip" i kabul etse de.
    2013-05-28 00: 28: 51Z
  4. @ android_developer (yukarıdaki 5 yorum) dp, aynı fiziksel uzunluğa sahip değil . (Her ne kadar yakın olsa da.) Bkz. @ Fraggle'ın kovalama hakkındaki yorumu. Bunun anlamı, 48dp'nin kabaca 8 mm (0,3 inç) olacağı, ancak 11 mm'ye kadar değişebileceğidir.
    2013-06-15 06: 59: 43Z
  5. Kovalamanın nedeni, geliştiricilerin uygulamalarını farklı yoğunluktaki birkaç cihazda test edebilmeleri ve düzenlerin çok sayıda cihazda aynı görüneceğinden emin olmalarıdır. Bu nedenle, düğmelerin fiziksel boyutu vb. Biraz değişse bile, etkinliğin genel görünümü aynı olacaktır.
    2013-06-15 07: 03: 34Z

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

  

Ekran boyutu
  Gerçek fiziksel boyut, ekranın köşegeni olarak ölçülür.   Basit olması için Android, tüm gerçek ekran boyutlarını dörde böler   genelleştirilmiş boyutlar: küçük, normal, büyük ve ekstra büyük.

     

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

     

Yönlendirme
Ekranın kullanıcının bakış açısından yönlendirilmesi   görünüm. Bu manzara veya portre, yani ekranın   En boy oranı, sırasıyla geniş veya uzun. Farkında değil   sadece farklı cihazlar farklı yönlerde çalışır   varsayılan, ancak yönlendirme, kullanıcı   cihazı döndürür.

     

Çözünürlük
’deki toplam fiziksel piksel sayısı   ekran. Birden fazla ekran için destek eklerken, uygulamalar   doğrudan çözünürlükle çalışmıyor; uygulamalar endişeli   sadece genelleştirilmiş tarafından belirtilen ekran boyutu ve yoğunluğu ile   boyut ve yoğunluk grupları.

     

Yoğunluktan bağımsız piksel (dp)
Sanal   UI düzenini tanımlarken kullanmanız gereken piksel birimi, ifade etmek   mizanpaj boyutları veya yoğunluktan bağımsız bir şekilde konumlandırın.   Yoğunluktan bağımsız piksel, 160 üzerindeki bir fiziksel piksele eşittir   Sistem tarafından varsayılan temel yoğunluk olan dpi ekranı   "orta" yoğunluk ekranı. Çalışma zamanında, sistem şeffaf bir şekilde işler   dp birimlerinin gerçek yoğunluğa göre gerektiği şekilde ölçeklendirilmesi   Kullanılan ekranın Dp birimlerinin ekran piksellerine dönüştürülmesi   basit:    px = dp * (dpi / 160).   Örneğin, 240 dpi ekranda, 1 dp   1.5 fiziksel piksele eşittir. Dp birimlerini her zaman kullanmalısınız.   UI'nizin uygun şekilde görüntülenmesini sağlamak için uygulamanızın kullanıcı arayüzünü tanımlama   farklı yoğunluktaki ekranlar.

Birden fazla saat için bir Android uygulaması geliştirme konusunda ciddiysenizCihazın en az bir kez geliştirme destek belgelerini okumuş olmanız gerekir. Buna ek olarak, belirli bir ekran yapılandırmasına sahip olan fiili aktif cihaz sayısını bilmek her zaman iyi bir şeydir.

657
2018-11-27 09: 16: 27Z
  1. Eğer bir düğme için dp ve düğme metninin yazı tipi boyutu için sp kullanıyorsanız, kullanıcı ölçeklendirmeye başladığında ne olur? Metin genişleyecektir, ancak düğme bunu da genişleterek barındıracak mı?
    2012-10-05 09: 35: 46Z
  2. @ Wytze, hayır. Metnin yerleştirilmesinin bir sorun olabileceği şeyler için, sadece dip kullanın, böylece işler taşmaz.
    2013-07-13 17: 39: 50Z
  3. @ Wytze Ve ben, aksine, hem metin hem de içerdiği her şey için sp kullanın. Örneğin, sabit boyutlu bir düğüme ve içindeki bir metne sahipsem, düğme boyutunu sp olarak atar, böylece gerektiğinde ölçeklenir. Aksi takdirde, kullanıcı metnin boyutunu arttırdığı için sinirlenir ve artmaz. Elbette, düzen izin verecek kadar esnek olmalıdır.
    2013-10-14 23: 15: 04Z
  4. Tasarımcılarınız, metin tabanlı öğelere sp boyutuna göre ölçeklendirme için yer bırakmazsa, seçeneklerden biri, daha dar bir düzen için kullanacağınız düzene geçmek daha sonra cihaz tarafından her şeyi düzgün şekilde ölçeklendirin (DisplayMetrics.scaledDensity /DisplayMetrics.density).
    2014-07-16 17: 52: 16Z
  5. @ Sam herhangi bir boş alan olmaması da i18n sırasında sorunlara neden olur
    2018-07-16 09: 14: 30Z

dp'nin px'e tam olarak nasıl dönüştüğü konusunda daha fazla çalışacağım:

  • Bir mdpi cihazında çalışıyorsanız, 150 x 150 px görüntü 150 * 150 dp ekran alanı kaplar.
  • Bir hdpi cihazında çalışıyorsanız, 150 x 150 px görüntü 100 * 100 dp ekran alanı kaplar.
  • Bir xhdpi cihazında çalışıyorsanız, 150x150 px görüntüde 75 * 75 dp ekran boşluğu olur.

Diğer yol: diyelim ki uygulamanıza bir resim eklemek istiyorsunuz ve 100 * 100 dp denetimini doldurmanız 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ü
325
2018-04-06 19: 03: 33Z
  1. hdpi, ldpi, mdpi vb. pikselleri nasıl hesaplıyoruz? Bu formülü kullandığımızı duydum ... px = dp * (dpi /160); bana bu plz formülü ile açıklayabilir misiniz?
    2015-03-07 12: 25: 35Z
  2. @ Rakeshpatanga 160 dpi yoğunlukta, 1 px = 1 dp (fiziksel piksel ve dp soyutlama aynıdır). Yani, tek bir dp için (1) * (160/160) = 1 veya tam olarak 1 px değerine sahibiz. 320 dpi'lik daha yüksek yoğunlukta, tek bir dp (1) * (320/160) = 2 piksel ve iki dp (2) * (320/160) = 4 pikseldir.
    2017-09-06 14: 32: 17Z
  3. Bunları monospace içinde sıralayın: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (virgüllerden sonra satır sonları koy). | _ | = 1 p i x el.
    2017-09-06 14: 49: 48Z
  4. re "Desteklenen ekran boyutları için farklı boyutta görüntüler oluşturmanız gerekir:" Bu değişir. küçük yüksek kontrastlı görüntüler için, ör. simgeler, en azından en küçük boyutu oluşturmak akıllıca (emin olmak için winet olacağız) artı oldukça büyük bir boyut (böylece büyük sürümler bulanık görünmüyor). Ancak simgeler için bile, bir görüntünün daha yüksek yoğunluklarda, çeşitli boyutlarda ölçeklenmesini sağlayabilirsiniz. Fotoğraflar için, doldurmasını istediğiniz ekran alanını belirtin ve cihazın ölçeklendirmesine güvenin.
    2018-05-22 11: 51: 30Z

piksel Pikseller - ölçek başına puan, ekrandaki gerçek piksellere karşılık gelir.

İnç - ekranın fiziksel boyutuna bağlı olarak.

aa Milimetre - ekranın fiziksel boyutuna bağlı olarak.

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

DP Yoğunluk - bağımsız Piksel - ekranın fiziksel yoğunluğunu temel alan soyut bir birim. Bu birimler 160 dpi ekrana göredir, bu yüzden bir dp 160 dpi ekranda bir pikseldir. Dp-piksel oranı, ekran yoğunluğuyla birlikte değişecek,  ama mutlaka doğru orantılı değil.  Not: dip, dp ile daha tutarlı olmasına rağmen, derleyici dp ve sp'u kabul eder.

sp Ölçekten Bağımsız Pikseller - bu, dp birimi gibi  ancak kullanıcının yazı tipi boyutu tercihi tarafından da ölçeklenir. Yazı tipi boyutlarını belirlerken bu birimi kullanmanız önerilir,  bu yüzden hem ekran yoğunluğu hem de kullanıcının tercihi için ayarlanacaklardır.

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

 
                          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
    
269
2018-11-27 10: 48: 04Z

Ayrıca, aşağıdaki kavramları açıkça anlamanız gerekir:

Ekran boyutu:

  

Ekranın köşegeni olarak ölçülen gerçek fiziksel boyut. Basit olması için Android, tüm gerçek ekran boyutlarını gruplar halinde toplar   dört genelleştirilmiş boyut: küçük, normal, büyük ve çok büyük.

Ekran yoğunluğu:

  

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

Yönlendirme:

  

Ekranın, kullanıcının bakış açısından yönlendirilmesi. Bu manzara veya portre, yani   ekranın en boy oranı sırasıyla geniş veya uzun. Farkında olmak   sadece farklı cihazlar farklı yönlerde çalışmaz   varsayılan olarak, ancak yönlendirme, kullanıcı   cihazı döndürür.

Çözüm:

  

Ekrandaki toplam fiziksel piksel sayısı. Birden çok ekran için destek eklerken, uygulamalar doğrudan çalışmaz   çözünürlük ile; başvurular sadece ekranla ilgili olmalıdır   genelleştirilmiş boyut ve yoğunlukta belirtildiği gibi boyut ve yoğunluk   grupları.

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

  

Düzen boyutlarını ifade etmek için UI düzenini tanımlarken kullanmanız gereken sanal piksel birimi veya   yoğunluktan bağımsız bir şekilde konumlandırın. Yoğunluktan bağımsız piksel   160 dpi'lık bir ekranda bir fiziksel piksele eşdeğerdir;   "Orta" yoğunluk taraması için sistem tarafından varsayılan baz yoğunluğu.   Çalışma zamanında, sistem dp'nin tüm ölçeklemelerini şeffaf bir şekilde işler.   Gerektiğinde, kullanılan ekranın gerçek yoğunluğuna bağlı olarak   Dp birimlerinin ekran piksellerine dönüştürülmesi basittir: px = dp * (dpi   /160). Örneğin, bir 240 dpi ekranda, 1 dp 1,5 fiziksel değerine eşittir   piksel. Tanımlarken her zaman dp birimlerini kullanmalısınız.   uygulamanızın kullanıcı arayüzünde, kullanıcı arayüzünüzün ekranlarda düzgün görüntülenmesini sağlamak için   farklı yoğunluklar.

Referans: Android geliştiricileri sitesi

    
216
2018-11-27 13: 10: 53Z

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

Yalnızca {text-size} için sp kullanın.


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 yapabileceğiniz zor bir matematik yoktur.


Farklı ekran boyutlarında px, dp ve sp arasındaki farkı görün.

Resim tanımını buraya girin

Kaynak: Android Programlama: Büyük İnek Çiftliği Kılavuzu

    
190
2015-08-11 20: 53: 46Z

dpi - dp ve sp dönüşümlerini yapmak için aşağıdaki formülü hesapladım buraya resim açıklamasını girin

    
135
2017-04-06 10: 24: 04Z
  1. dpi yerine ppi olmalı
    2014-01-29 17: 02: 47Z

Tanımlar

px veya nokta fiziksel ekranda piksel .

dpi , fiziksel ekranda inç başına piksellerdir ve ekranın yoğunluğunu gösterir.

Android, diğer adlara birkaç yoğunluğa ad verir

  • ldpi (düşük) ~ 120dpi
  • mdpi (orta) ~ 160dpi
  • hdpi (yüksek) ~ 240dpi
    • 2015'teki çoğu cihaz burada
  • xhdpi (ekstra 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

dip veya dp , yoğunluktan kaynaklanan piksellerdir , yani fiziksel yoğunluğa bağlı olarak daha fazla veya daha az piksele karşılık gelir.

  • 1dp = mdpi'de 1 piksel

 buraya resim açıklamasını girin

sp veya sip , ölçekden bağımsız bir pikseldir . Ayarlar > 'de Büyük Metin seçeneği açıldığında ölçeklendirilirler. Erişilebilirlik

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

Ne kullanılır?

  

Metin boyutu için sp kullanın.

     

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

    
128
2016-03-02 09: 39: 05Z

Kaynak 1

Kaynak 2

Kaynak 3 : (3 numaralı kaynaktan gelen veriler aşağıda verilmiştir)

  

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

     

DP

     

Yoğunluktan bağımsız Pikseller - Pikselleri temel alan soyut bir birim.   ekranın fiziksel yoğunluğu. Bu birimler 160 dpi'ye göre   (inç başına nokta sayısı) ekran, 1dp'nin kabaca 1 piksele eşit olduğu ekran. Ne zaman   merhaba koşmaGher yoğunluk ekranı, çizmek için kullanılan piksel sayısı   1dp, ekranın dpi'sine uygun bir faktör tarafından ölçeklendirilir.   Aynı şekilde, daha düşük yoğunluklu bir ekranda, kullanılan piksel sayısı   1dp için aşağı ölçeklenir. Dp-piksel oranı ile değişecektir   ekran yoğunluğu, ancak mutlaka doğru orantılı değil. Dp kullanarak   birimleri (px birimleri yerine) görünümü yapmak için basit bir çözümdür   Mizanpajınızdaki boyutlar farklı ekranlar için doğru şekilde   yoğunlukları. Başka bir deyişle, gerçek dünyaya tutarlılık sağlar   UI öğelerinizin farklı cihazlardaki boyutları.

     

sp

     

Ölçekten Bağımsız Pikseller - Bu dp birimi gibidir, ancak aynı zamanda   kullanıcının yazı tipi boyutu tercihi tarafından ölçeklendirilir. Kullanmanız önerilir   yazı tipi boyutlarını belirlerken bu birim, bu nedenle   Hem ekran yoğunluğu hem de kullanıcının tercihi.

     

pt

     

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

     

piksel

     

Piksel - Ekrandaki gerçek piksellere karşılık gelir. Bu birim   fiili gösterim değişiklik gösterebileceğinden ölçüm önerilmemektedir.   cihazlar arasında; Her cihazda farklı piksel sayısı olabilir.   inç ve ekranda daha fazla veya daha az toplam piksel olabilir.

     

aa

     

Milimetre - Ekranın fiziksel boyutuna göre.

     

     

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

Not: Boyut, ad ö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 öğenin altındaki tek bir XML dosyasındaki diğer basit kaynaklarla birleştirebilirsiniz.

    
122
2018-11-27 09: 15: 09Z
  1. Ayrıca: bu cevabın katma değeri nedir? Başka cevaplarda daha önce söz edilmemiş bir şey yok gibi görünüyor.
    2013-12-27 09: 28: 25Z

Temel olarak px'in uygulandığı tek zaman bir px'dir ve böylelikle ekranda bölücü gibi olduğu gibi tam olarak bir piksel istiyorsanız:

> 160 dpi'de, 2-3 piksel alabilirsiniz,

> 120 dpi'de, 0'a yuvarlanır.

    
110
2018-03-31 10: 05: 28Z
  1. getDimensionPixelOffset aşağı yuvarlanır, getDimensionPixelSize yukarı yuvarlanır.
    2017-05-28 22: 24: 38Z

piksel

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

dp veya dip

Yoğunluktan bağımsız Pikseller - ekranın fiziksel yoğunluğuna dayalı 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ğunluktaki ekranlarda görüntülendiğinde, kullanıcı arayüz öğelerinin fiziksel boyutunu koruduğunda (kullanıcının bakış açısından) “yoğunluktan bağımsızlık” elde eder. (yani) Görüntü, farklı ekran türlerinde aynı boyutta (büyütülmemiş veya daralmamış) görünmelidir.

sp

Ölçekten Bağımsız Pikseller - bu dp birimi gibidir, ancak kullanıcının yazı tipi boyutu tercihi tarafından da ölçeklenir.

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

    
93
2013-04-02 06: 35: 37Z

Neyi kullanmalı & px arasındaki ilişkiamp; dp?

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

Düzen boyutlarını belirtmek veya yoğunluktan bağımsız bir şekilde konumlandırmak 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, bir "orta" yoğunluk ekranı için sistem tarafından varsayılan temel yoğunluk olan 160 dpi'lik bir ekrandaki bir fiziksel piksele eşittir. Çalışma zamanında, kullanılan ekranın gerçek yoğunluğuna bağlı olarak, dp birimlerinin herhangi bir ölçeklendirmesini şeffaf bir şekilde işler. Dp birimlerinin ekran piksellerine dönüştürülmesi Basit:

px = dp * (dpi /160).

Örneğin, bir 240 dpi ekranda 1 dp, 1,5 fiziksel piksele eşittir. Uygulamanızın kullanıcı arayüzünü tanımlarken, emin olmak için her zaman dp birimlerini kullanmalısınız. kullanıcı arabiriminizin farklı yoğunluktaki ekranlarda düzgün görüntülenmesini sağlar.

Pikselini dp'ye ve tersine anlamak çok önemlidir (özellikle yaratıcı ekibine tam olarak 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 ekibinden tüm piksel değerlerini çift sayılar almaya çalışın. Aksi taktirde, 0.5 ile çarparken hassasiyet kaybı olur.

px

Yukarıda açıklanmıştır. Düzen dosyalarından kaçınmaya çalışın. Ancak px'nin gerekli olduğu bazı durumlar vardır. örneğin, ListView bölücü satırı. px, tüm ekran çözünürlüklerinde bölücü olarak tek piksellik bir çizgi vermek için daha iyidir.

sp

Yazı tipi boyutları için sp kullanın. Ardından, cihaz fontları boyut değişiklikleri (yalnızca, Ekrandaki - > Cihazdaki Yazı Tipleri) olurken yalnızca uygulama içindeki yazı tipi değişecektir. Uygulamanın içinde statik boyutlu bir yazı tipi tutmak istiyorsanız, yazı tipi boyutunu dp cinsinden verebilirsiniz. Böyle bir durumda, asla değişmeyecek. Geliştiriciler bazı özel ekranlar için böyle bir gereksinim alabilir, bunun için geliştiriciler sp yerine dp kullanabilir. Diğer tüm durumlarda, sp önerilir.

    
91
2015-06-06 14: 31: 47Z

px ve dp arasındaki farkı aşağıdaki resimden görebilirsiniz ve px ve dp'un farklı ekranlarda aynı fiziksel boyutları garanti edemeyeceğini de bulabilirsiniz.

resim tanımını buraya girin

    
83
2015-02-13 18: 50: 12Z
  1. @ EnesBattal, bence dp akut bir fiziksel boyut olmadığı için, yaklaşık bir değerdir. 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 yalnızca yaklaşık olarak aynıdır. Bir inçte yaklaşık 160" dp "vardır. Cihazın yoğunluk kovasına, “dp” yi 160 dpi piksel sayısına dönüştürmek için uygulanır Tek bir “dp” nin piksel sayısına dönüştürdüğü piksel sayısı, ekran yoğunluğundaki piksele ve cihazın düşme yoğunluğuna bağlı olarak değişir içine. "
    2015-09-17 14: 12: 16Z
  2. @ RuchirBaronia, DP veya DIP'nin hala apk içinde olduğunu düşünüyorum, çünkü apk hala hangi tür ekran yoğunluğuyla çalışacağını bilmiyor; cihaz bağımsızlığı hala korunmalı.
    2015-11-25 18: 18: 55Z

Metin boyutu ve görünümle ilgili her şey sp veya pt'u kullanmalıdır. Oysa kontrollerin boyutu, düzenleri vb. İle ilgili her şey dp ile birlikte kullanılmalıdır.

Hem dp'u hem de dip'u yerde kullanabilirsiniz.

    
74
2015-07-01 14: 30: 11Z

Yalnızca dp kullanırım.

Yazı tipi boyutları için "sp" kullanımı hakkında çok fazla konuşma var ve bu konuyu takdir ederken, tasarım açısından yapılacak doğru bir şey olduğunu sanmıyorum. Kullanıcının bazı yazı tipi boyutu seçimi ve kullanımı biraz eskimişse, tasarımınızı bozmaya başlayabilirsiniz.r, kendi yaşam seçimlerini değil, uygulamayı suçlayarak sona erecek.

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

"sp" fontları fikri iyi bir kalbe sahip olsa da, kötü bir fikirdir. Her şey için dp'ye bağlı kalın.

    
65
2015-06-06 14: 42: 19Z
  1. sp'a uygulanan font ölçeği faktörünün bir faktör olduğunu biliyorsunuz, değil mi? dp'u etkileyen herhangi bir şey sp'u da etkileyecektir. Bununla birlikte, mizanpajınız çok sıkıysa ve daha büyük boyutlar sığmazsa, dp yerine sp kullanarak font boyutlarını belirtmeniz yine de tercih edilir - kullanıcının tamamen karışık bir mizanpajdan istediğinden daha küçük bir metni olması daha iyidir. Ancak ilk örnekte, her zaman kullanıcının yazı tipi boyutu tercihine saygı duymaya çalışmalısınız - en büyük ayar bile bu kadar büyük değildir.
    2017-02-26 22: 06: 15Z

sp = bağımsız pikseli ölçeklendir

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 destekliyor

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

120 dp ldpi bir cihaz, 1 inç boyutunda 120 piksele sahiptir.

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

Biz yazılım mühendisleri olarak bu dönüşüm formülünü kullanmalıyız:

  

piksel = dp * (yoğunluk /160)

Böylece 240 dpi aygıtın 1 dp'si = 1 * (240/160) = 3/2 = 1,5 piksel olacaktır.

480 dpi aygıtın 1 dp'si = 1 * (480/160) = 3 piksel olacaktır.

Bu 1,5 ve 3 piksel bilgisini kullanarak, bir yazılım mühendisi farklı yoğunluklar için 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();
    
61
2018-07-27 07: 02: 15Z
  1. Anlamak için çok iyi bir eğitim: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
    2015-03-16 10: 06: 05Z
  2. "sp kullanmaktan kaçınmalıyız" Neden? Yazı tipi boyutlarıyla uğraşırken sp'i kullanmalısınız, çünkü kullanıcının tercih ettiği metin boyutunu dikkate alır, developer.android.com/training/multiscreen/screendensities.html
    2015-03-20 10: 05: 57Z
  3. Mizanpaj perspektifine göre cevap verdim. Lütfen verdiğiniz bağlantıyı okuyunuz "bu yüzden metin ölçüsünü tanımlarken bu ölçü birimini kullanmalısınız (ancak mizanpaj boyutları için değil). "
    2015-03-20 10: 22: 31Z
  4. Soru şu oldu: "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 perspektifinden" bahsedilmedi.
    2015-03-20 10: 28: 32Z
  5. Evet .. dp ve dip aynı ... birbirinin yerine kullanıldı ... Cevabım sorgunuzu çözdü mü?
    2015-11-24 06: 36: 23Z

" Kullanıcının yazı tipi boyutu tercihi " olarak belirtilen dp ile sp üniteler arasındaki fark, resmi dokümantasyondan kopyalanan cevaplarla görülebilir.Settings->Accessibility->Large Text seçeneğini değiştirerek zaman ayırın.

Large Text seçeneği, metni 1.3 kat daha büyük olmaya zorlar.

 
private static final float LARGE_FONT_SCALE = 1.3f;

Bu, elbette satıcıya bağlı olabilir, çünkü paketler /uygulamalar /Ayarlar .

    
58
2013-10-14 08: 44: 10Z

dpi -

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

px - piksel

  • Ekran piksellerini eşlemek için

pt - puan

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

inç - inç  - 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' içinde olmalıdır.

dip -

  • dip == dp
  • Yoğunluktan bağımsız piksel.
  • Ekran Yoğunluğuna göre değişir.
  • 160 dpi ekranda, 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 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  
    
50
2015-11-24 08: 32: 41Z
  1. Belgelere göre Derleyici hem "dip" hem de "dp" i kabul eder, ancak "dp" "sp" ile daha tutarlı olmasına rağmen.
    2015-11-24 08: 15: 46Z

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

  

px = dp * (dpi /160)

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 (ekstra yüksek) ~ 320dpi
  • xxhdpi (ekstra-ekstra-yüksek) ~ 480dpi
  • xxxhdpi (ekstra-ekstra-ekstra-yüksek) ~ 640dpi

burayı kullanarak alınmıştır.

Ekran dpi'nizi biliyorsanız, px ve dp arasında çeviri yaparken bu karışıklığı giderir.

Öyleyse, hdpi ekranı için 60 dp'lik bir görüntü istediğinizi ve ardından 60 dp'lik fiziksel piksel boyutunu istediğinizi varsayalım:

 
px = 60 * (240 / 160)
    
43
2018-03-09 06: 24: 59Z

Ekran Boyutu , Android’da small, medium, large, extra large, double-extra ve triple-extra kategorilerine ayrılmıştır. Ekran yoğunluğu, ekranın bir alanındaki (inç gibi) piksel miktarıdır. Genellikle inç başına nokta (dpi) cinsinden ölçülür. Ekran yoğunluğu düşük, orta, yüksek ve çok 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 ekranda, 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 Ölçeği. Yazı tipleri sp kullanmalı.
  • px: , ekran pikseliyle eşleşen normal standart pikselimizdir.
  • Fiziksel ekran boyutuna göre inç: inç.
  • Fiziksel ekran boyutuna göre mm: milimetre.
  • Fiziksel ekran boyutuna göre pt: 1/72 inç.

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

 
 px = dp * (dpi / 160)

cihazda px'e dp

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 gerçekleşir. Google’ın tasarımı için önerilen oran ldpi: mdpi: hdpi: xhdpi: xxhdpi

için 3: 4: 6: 8: 12'dir.

Bir 150px X 150px görüntü kaplayacak,

  
  • mdpi'de 150 dp X 150 dp ekran alanı
  •   
  • hdpi'de 100 dp X 100 dp ekran alanı
  •   
  • xhdpi'de 75 dp X 75 dp ekran alanı
  •   

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

Java'da DPI Hesap Makinesi

 
/*
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/

    
43
2018-03-28 10: 24: 14Z
  • px - CSS, JavaScript vb. ile kullanılanlarla aynı olan bir piksel.
  • sp - ölçekden bağımsız pikseller
  • dip - yoğunluktan bağımsız pikseller

Normalde sp font boyutları için kullanılırken dip, diğerleri için dip (dp de denir) kullanılır.

    
42
2015-06-06 14: 41: 25Z

Lütfen topluluk wiki sayfasındaki yanıtı okuyun. Aşağıda, yukarıdaki cevaplara ek olarak dikkate alınması gereken bazı bilgiler verilmiştir.

sp = bağımsız pikseli ölçeklendir

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

dpi = yoğunluk pikselleri

Yukarıdaki cevapları okudum ... tam olarak doğru bulmadım. metin boyutu için sp, düzen sınırları için dp - standart. Ancak metin boyutu için sp, aygıtların çoğunda dikkatsizce kullanılırsa düzeni bozar .

sp cihazın metin mesajını alır, dp ise cihaz yoğunluğu standardını alır (asla cihazda değişmez) Diyelim ki 100sp metni cihazda ayarlanan yazı tipi boyutuna bağlı olarak% 80 ekran veya% 100 ekran kaplayabiliyor

 buraya resim açıklamasını girin

sp düzenini sınırları için de kullanabilirsiniz, işe yarayacak :) Tüm metin için standart uygulama kullanmamaya devam etme

UX'i dikkate alarak metin boyutu için sp ve dp kullanın.

  • sp çubuğunu metin için araç çubuğunda kullanmayın (farklı ekran boyutları için dp ile kullanılabilen android boyutlarını kullanabilirsiniz)
  • Küçük sınırlı düğmelerdeki metinler için sp, çok daha küçük metinler vb. kullanmayın

Bazı insanlar telefonlarında daha fazla okunabilirlik için büyük FONT boyutlarını kullanır, onlara küçük kodlanmış küçük boyutlu metinler vermek UX sorunu olur. Gerekli olan yerlerde metin için sp yazın, ancak düzeni bozmayacağından emin olun.

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

Ayrıca, kişilerin telefonlarında özel yazı tipi kullandığını da unutmayın. Bu yüzden bir fontun olmaması boşluk ve diğer konularla ilgili sorunlara neden olabilir. Özel bir yazı tipi için metin boyutu 12sp’in varsayılan yazı tipinden daha fazla piksel alabileceğini söyleyin.

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

    
38
2019-05-16 10: 37: 03Z

Farklı ekran çözünürlükleri için Android uygulamaları kullanıcı arayüzü tasarlama hakkında iyi bir yazıyla karşılaştım ve bu alanda arama yapan biri için onu burada bırakmak istiyorum. Evet, bir şekilde Google dokümanlarında anlatıldığını biliyorum (ve yukarıdaki yazılarda belirtildi), okudum ama hayır oldut benim için iyi (evet, çok aptal olabilirim)). Farklı ekran boyutlarını idare edebilecek düzenlerin nasıl tasarlanacağı benim için belirsizdi. Farklı konseptler için "esnek" bir UI düzeni uygulamam gerektiğinde DP konseptinden nefret ediyorum. (Hey iOS geliştiricileri - evet, haklısınız, Storyboard konsepti).

Android'de kullanıcı arayüzü fena değil, ancak maalesef iOS Storyboard özellikleri bulunmuyor. Android'de esnek kullanıcı arayüzü tasarlamak kolay bir şey değildir (en iyi ihtimalle).

Burada, farklı ekran boyutları için düzenler oluşturmak için Android'de ne yapacağımı anlamama yardımcı olan makaleye bakalım:

JMSTUDIO Blog: - Android Uygulama 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 arayüzü oluşturmak üzere ilk tasarımımız   Her ekran boyutu için minimum gerekli alanı karşılamak. Android bir tanımlar   Her genelleştirilmiş ekran türü için minimum boyut (dp cinsinden). İşte bir   Android ekran boyutu kılavuzu.    Dp'deki Android için Minimum Ekran Boyutu   Dp cinsinden ekran boyutunu aldığımızda, tasarım yapmamız yeterli değil   Android uygulaması kullanıcı arayüzü. Her ekran boyutu için grafikler hazırlamamız gerekiyor.   ve her yoğunluk için bitmap görüntüler. İşte bir Android ekran yoğunluğu   rehber.    Android Yoğunluk Kılavuzu (dpi)

     

Kolay hesaplama için, 3: 4: 6: 8 ölçekleme oranını takip edebiliriz.   dört genelleştirilmiş yoğunluk. Eğer için 36 × 36 piksel resim oluşturursak   ldpi cihazı, geri kalan yoğunluk resim boyutu mdpi için 48 × 48 olacaktır,   Hdpi için 72 × 72 ve xhdpi için 96 × 96.

     

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

     

Birçok tasarımcı, Photoshop veya diğer piksellerde Android uygulama kullanıcı arayüzü tasarlamada sorun yaşar   Yoğunluktan bağımsız ünite sayesinde grafik tasarım araçları, dp.   Tasarımcılar dp'yi pikselle nasıl eşleştireceğini bilmiyor. Google da vermiyor   onlar için bir temel vermek rağmen, onlar için net bir Android UI tasarım rehberi   dp ve piksel çevirisi için formül.

     

Android'in tanımı olarak, 160 dpi (mdpi) altında 1px'e eşit 1pd.   Yani biz xlarge Android cihaz için bir Android uygulaması tasarlamak istiyoruz   mdpi yoğunluğu, UI boyutumuzu piksel cinsinden genişliği 960 piksel olarak tanımlayabiliriz.   ve 720px yükseklikte; Aynı harita kuralına uyun, alabiliriz   Android App ekran boyutu UI tasarım kılavuzuna uyarak:

     

 Piksel Kılavuzunda Android Uygulama Ekranı Boyutu

EKLENDİ : "Esnek" kullanıcı arayüzü ile de ilgileniyorsanız, bu kütüphaneye bir göz atın: Yeni bir boyut birimi sağlayan bir Android SDK - sdp (ölçeklenebilir dp). Bu boyut birimi, ekran boyutuyla ölçeklenir (bu ayrıca bir yanıtta, yaklaşık SDP kitaplıkta da belirtilmiştir)

ADDED2 Google, nihayet iOS Storeboard UI konseptinin işe yaradığını anlamıştı ve işte Android dünyası için ConstraintLayout: ConstraintLayout ile Duyarlı bir UI oluşturun

    
36
2018-09-14 15: 03: 37Z

1) dp: (density independent pixels)

Bir dp biriminde temsil edilen piksel sayısı, ekran çözünürlüğü arttıkça artar (inç başına daha fazla nokta /piksel varsa). Tersine daha düşük çözünürlüğe sahip cihazlarda, dp biriminde temsil edilen piksel sayısı düşecektir. Bu göreceli bir birim olduğundan, karşılaştırılması gereken bir temele sahip olması gerekir. Bu taban çizgisi 160 dpi ekrandır. Bu denklemdir: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Bu birim, ekran dpi'sine (dp'ye benzer) ve kullanıcının yazı tipi boyutu tercihine 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
2018-04-02 13: 58: 40Z

Ekran boyutu Android’de ldpi, mdpi, hdpi, xhdpi, xxhdpi ve xxxhdpi kategorilerine ayrılmıştır. Ekran yoğunluğu , ekranın bir alanındaki (inç gibi) piksel miktarıdır. Genellikle inç başına nokta sayısıyla (dpi) ölçülür.

PX(Pixels):

  • , ekran pikseliyle eşleşen normal standart pikselimizdir. px, mutlak pikseller 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. Daha önceki Android sürümlerinde dip kullanılmış ve sonra dp olarak değiştirilmiştir. Bu, px'un alternatifidir.

  • Genellikle asla px'u kullanmayız, çünkü mutlak değerdir. Genişliği veya yüksekliği ayarlamak için px kullanıyorsanız ve bu uygulama farklı ekran boyutundaki cihazlara indiriliyorsa, bu görünüm ekranın orijinal boyutuna göre uzamayacaktır.

  • dp, px yerine kullanılması önerilir. Büyümek için genişlik ve yükseklikten bahsetmek istiyorsanız dp'u kullanın. Ekran boyutlarına göre dinamik olarak küçültün.

  • dp/dip verirsek, android piksel boyutunu otomatik olarak 160 piksel boyutundaki ekrana göre hesaplar.

SP(Scale independent pixels):

  • , kullanıcının yazı tipi boyutu tercihine göre ölçeklenir. Yazı tipleri sp kullanmalı.

  • çeşitli ekran boyutlarına sığacak şekilde yazı tipi boyutlarından söz ederken, sp'u kullanın. Bu, dp'a benzer. Özellikle font boyutlarının büyümesi için sp'u kullanın. ekran boyutlarına göre dinamik olarak küçültme

Android Belgeleri şunları söylüyor:

  

boyutları belirtirken, her zaman dp veya sp ünite kullanın. Bir dp   bir fiziksel boyutuna karşılık gelen yoğunluktan bağımsız bir piksel   160 dpi'da piksel. Bir sp aynı ana ünitedir, ancak   kullanıcının tercih ettiği metin boyutu (ölçekden bağımsız bir pikseldir);   Metin boyutunu tanımlarken bu ölçü birimini kullanmalı

    
28
2015-10-07 08: 47: 56Z

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

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

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

Yoğunluktan bağımsız bir piksel (dp veya dip), temel yoğunluktaki bir piksele veya 160 dpi (inç başına nokta) değerine eşittir.

1 px /1dp = 160 dpi /160 dpi

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

burada,

dpi, inç başına nokta sayısı

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

Formül

px /dp = dpi /160dpi

İnç başına nokta (dpi), bir ekrandaki ekrandaki keskinliğin bir ölçüsüdür (yani, ışıklı noktaların yoğunluğu). Belirli bir resim çözünürlüğü için inç başına düşen noktalar, toplam ekran boyutuna göre değişecektir, çünkü aynı sayıda piksel farklı bir alana yayılmıştır.

Yoğunluktan bağımsız piksellerle çalışmak, aynı piksel çözünürlüğünde fakat farklı miktarda alan içeren iki cihazınız olduğu gibi 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 taban çizgisi yoğunluğunda (160 dpi) olduğu için, fiziksel ve yoğunluktan bağımsız piksel boyutları aynı, 1280 x 800'dir. Öte yandan, telefonun piksel yoğunluğu daha yüksektir; piksel olarak fiziksel pixels. Yani bir telefon 400 x 640 yoğunluktan bağımsız piksellere sahiptir. Bu nedenle yoğunluktan bağımsız bir piksel kullanmak, tabletin telefondan çok daha fazla alana sahip olduğunu zihinsel olarak görmeyi kolaylaştırır.

Benzer şekilde, ekran boyutu aynı olan ancak farklı piksel yoğunluğuna sahip iki aygıtınız varsa, birinin 800 - 1280 piksel (320 dpi) ve diğerinin 400 x 640 piksel (160 dpi) olduğunu varsayalım. Her iki cihaz için aynı olan yoğunluktan bağımsız piksel cinsinden varlıkları ölçebildiğimiz için bu iki cihaz için tamamen farklı düzenler tanımlamak.

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)

Bağımsız pikselleri ölçekle (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 okumakta güçlük çeken kullanıcılar, cihazlarının yazı tipi boyutunu artırabilir. Normalde bu seçeneği telefonunuzda veya tabletinizde yazı tipi altındaki ekran ayarında bulabilirsiniz. Ayrıca erişilebilirlik ayarları aracılığıyla da erişilebilir.

Ölçek bağımsız piksellerde, cihazın yazı tipi boyutu normal veya% 100 olduğunda 16 sp tam olarak 16 dp ile aynıdır. Ancak cihazın yazı tipi boyutu büyük olduğunda, örneğin% 125, 16 sp, 20 dp veya 1.25 kat 16 değerine dönüşür.

Yazı tipi boyutu için dp kullanırsanız, kullanıcının yazı tipi boyutunu özelleştirmesine bakılmaksızın, o metin parçasının belirli bir fiziksel boyutu vardır. Sp birimlerinin kullanılması, görme sorunu olan kişiler için daha iyi bir deneyim sağlayacaktır.

Referans : Udacity , Google

    
21
2017-10-18 05: 31: 24Z
  

sp: bağımsız pikseli ölçeklendir

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

  

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

    
17
2018-03-09 08: 59: 48Z

Bu soruyu cevaplamadan önce, öncelikle birim sayısını azaltmama izin verin. Öyleyse işte buradasınız: dp veya dip ikisi de aynıdır ve Yoğunluktan bağımsız pikseller olarak bilinir.

1 . px - pikselleri ifade eder. Pikseller tek bir nokta, ekranda bir nokta. Genellikle mobil endüstride, ppi cinsinden ölçülür (inç başına piksel). Ekran çözünürlüğü ppi ile doğru orantılıdır, inç başına piksel sayısı büyüdükçe ekran çözünürlüğü artar.

Örneğin, 200 px * 200 px boyutunda bir resim çizerseniz, görünümünün düşük çözünürlüklü bir çözünürlüğe karşı yüksek çözünürlüklü bir cihazda farklı olması gerekir. çözünürlük aygıtı Bunun nedeni, düşük çözünürlüklü bir telefonda 200 piksel bir görüntünün, yüksek çözünürlüklü bir cihazdan daha büyük görünmesidir.

Aşağıdaki resimler, farklı telefonlarda aynı resmin çözünürlüğünü gösteriyor -

  • Yüksek ekran çözünürlüğüne sahip telefon

     Buraya resim açıklaması girin

  • Düşük ekran çözünürlüğüne sahip telefon

     Buraya resim açıklaması girin

2 . dip veya dp - ekranın fiziksel yoğunluğunu temel alan soyut bir birim. Bu birimler 160 dpi ekrana göredir, bu nedenle bir dp, 160 dpi ekranındaki bir pikseldir. Dp-piksel oranı, ekran yoğunluğu ile değişecek, ancak doğrudan doğruya değil. "Yoğunluk bağımsızlığı", UI öğelerinin farklı yoğunluktaki ekranlarda tek tip gösterimini ifade eder.

  • 80px (sol taraftaki resim) ve 80 dp (sağ taraftaki resim) gösteren resim . Ödeme farkı.

 Buraya resim açıklaması girin

Bir dp, 160 yoğunluğunda bir ekrandaki bir fiziksel piksele eşittir. Dp'yi hesaplamak için:

dp = (piksel cinsinden genişlik * 160) /ekran yoğunluğu

3 . sp - ölçeklenebilir piksellerin kısaltmasıdır. Genellikle kullanıcı arabirimindeki metinler için sp kullanılır ve sp font ayarlarını korur. Örneğin, bir kullanıcı 30 sp 'den daha büyük bir font seçtiyse, kullanıcı tercihine göre büyük görünmek üzere otomatik olarak ölçeklenir.

    
14
2017-12-07 17: 58: 56Z
  1. , Phone with low screen resolution ile uygun resme karıştıysanız
    2017-12-04 12: 30: 52Z
  2. @ RoyiNamir Lütfen yorumunuzu açıklayabilir misiniz, yoksa mümkünse lütfen düzenleme önerin
    2017-12-07 13: 23: 30Z
  3. bu, yüksek çözünürlükte bir telefon. düşük değil: i.imgur.com/tnu87VR.jpg
    2017-12-07 13: 24: 34Z

dp'u anlamak için kolay bir yol sağlamak istiyorum. Aslında, dp'un anlaşılması en kolay olduğunu düşünüyorum. dp sadece fiziksel bir uzunluk birimidir. mm veya inch ile aynı boyutta. 50dp veya 60dp yerine 50/160 inch, 60/160 inch yazmamız bizim için uygun, çünkü bir dp, ekran boyutu veya çözünürlüğü ne olursa olsun, 1/160 inch.

Tek sorun şu ki, bazı ekranların android dpi'si doğru değil. Örneğin, 160 dpi'ye sınıflandırılmış bir ekran gerçekten 170 dpi'ye sahip olabilir. Bu yüzden dp'un hesaplama sonucu belirsiz. Yaklaşık olarak 1/160 inch ile aynı olmalıdır.

    
13
2016-04-02 03: 35: 21Z

SDP - ölçeklenebilir bir boyut birimi - temelde bir birim değil, kaynakları farklı ekran boyutuna göre boyutlandırın.

Intuit'ten sdp kütüphanesini deneyin. Ünite sorunlarını çözmek çok kullanışlıdır ve hızlıca birden çok ekranı destekleyebilir .

Kullanım

pozitif için android:paddingBottom="@dimen/_15sdp" ve negatif sdp sdp için android:layout_marginTop="@dimen/_minus10sdp"

values-sw<N>dp klasördeki her bir boyut için dp cinsinden eşdeğer değere sahiptir (sw = smallestWidth).

Dikkat

Dikkatli kullan! Çoğu durumda, tabletler için farklı bir düzen tasarlamanız gerekir.

Örnek

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

Metin boyutu için db kullanabilirsiniz, ancak metin boyutu için ssp 'i tercih ederim.

Daha fazla ayrıntı için Kütüphane GitHub sayfasını kontrol edin.

    
13
2017-10-18 05: 26: 33Z
kaynak yerleştirildi İşte
Diğer sorular
10
Polinomları verilere uyarlama
diye sordu 10 yıl önce
1
Gnuplot çizgi tipleri
diye sordu 5 yıl önce