2011-01-20 24 views
5

XML dosyalarında pt birimi kullanıyorum. Şimdi bir öğenin çalışma zamanında genişliğini ayarlamanız gerekiyor. Genişliği noktalara göre nasıl ayarlayabilirim ki, başka bir yerde kullandığım aynı birim. Çözünürlük ve dpi ile çoğaltmaya ihtiyacım var sanırım. Bir kod örneği en iyisi olurdu.Android: Noktaları piksellere dönüştür

+0

Lütfen Noktalarımı Piksellere dönüştürme ile ilgili gönderin http://systemdotrun.blogspot.co.uk/2014/09/whats-point-in-font-sizing.html? – Dori

cevap

10

İlk kullanabilirsiniz: bulacaksınız

http://developer.android.com/guide/practices/screens_support.html

Sağ ortada aşağıdaki kodun altından:

Kodunuzda kodlanmış piksel değerleri kullanmayın

// Convert the dps to pixels 
final float scale = getContext().getResources().getDisplayMetrics().density; 
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f); 
+1

Niçin ikinci satırda "+ 0.5f" var? Bu örnekteki sihirli sayı mı yoksa pikselleri doğru olarak dp'ye dönüştürmek mi gerekiyor? – C0deAttack

+3

İfade tamsayıya dönüştürüldüğünde en yakın tam yuvarlar. – Blrfl

+0

Blrfl doğru bu en yakın tam sayıya yuvarlar. – Yahel

1

Eğer gerçekten Android Geliştirici Belgeler aşağıdaki derinlemesine makaleyi okumalısınız dip yerine pt

+1

Programcı olmayanlara daha anlamlı olduğu için pt yerine pt kullanıyorum. Birisi bunun ne kadar büyük olduğunu sorarsa 12 puan söyleyebilirim ve bunun ne olduğunu bilebilirler. Pikseller söylerlerse, Android piksellerinin çok daha küçük olduğunu fark edemezler, sonra PC'lerde ve dipseler söylerlerse yeni bir kelime ile karşı karşıya kalacaklar. Bütün bunlar bir kenara. Çalışma zamanında dalmayı kullanabilir miyim? Pt'yi daldırma yapabilir miyim? –

+0

Çalışma zamanı sorusunda daldırma ile ilgili olarak. Evet yapabilirsiniz, ancak pikselleri, bağlam(). GetResources(). GetDisplayMetrics(). Yoğunluk ile alabileceğiniz ekran ölçek faktörü ile çarparak piksellere dönüştürmelisiniz. – C0deAttack