2010-11-22 17 views
2

Android emülatöründe WVGA800 derisi kullanıyorum, bu yüzden yoğunluk (hw.lcd.density) 240'tır. Aktivite görünümünün altında 4 resim düğmesi (inç başına 72 piksel) koymak zorundayım. Çözünürlük 480X800 olduğu için, resmin genişliğinin 120 piksel olması gerektiğini düşündüm. Sorun, uygulamanın başlatıldığı zaman, 3 düğmenin tüm genişliğini alması ve 4. düğme için yer olmamasıdır ... Sonra, Fireworks uygulamasında inç başına 240 piksel çözünürlük ve 120 piksel genişliğinde düğme görüntüsü oluşturdum, ancak sorun devam ediyor. Birisi, Android'de piksel olarak piksel gösterilebilmeleri için doğru çizgilerin (boyutlar ve dpi) nasıl yapılacağını açıklayabilir mi?Android, images ve dpi

cevap

0

Genişlik aslında 320 pikseldir, bu nedenle tüm ekran boyunca 4 düğme her biri 80dip olarak ayarlanır. Android daha sonra yoğunluk bağımsız piksellerinizi 480 pikselin uygun ekran boyutuna ayarlayacaktır.

+0

Düzeni ile birlikte 800X480 aygıtı kullanılıyorsa, her biri 120px genişliğinde 4 düğme (72 piksel/cm'lik kaynaklara sahip ImageButton, Fireworks CS5'te standart çözünürlük ve ayrıca Photoshop'a inanıyoruz) yazdı. Eğer px dp ile değiştirilirse, o zaman 4. düğüme yer kalmadı ve tüm düğmeler gerildi ve bulanıklaştı. Tek bir açıklama var 1px IS DEĞİL 1dp !!! Yani dp kullanmak için, px'i 1,5 ile bölmelisiniz. Örneğin, resmim 60 piksel ise, düzende 40dp kullanmalıyım. Bu yaklaşım, daha düşük çözünürlüklü cihazlarda da çalışır, örneğin HTC Wildfire - ImageButtons'ım doğru şekilde yeniden boyutlandırıldı. – StevenR

1

Görüntüyü tamamen dikkate almayın. Bu alakasız, bilmeniz gereken tek şey piksel boyutudur. Aslında önereceğim şey, düğme arka planınız olarak kullanmak üzere NinePatch görüntü oluşturmaktır. Farklı odaklama durumlarının bu şekilde tanımlandığı (örneğin, Basılı, Odaklanmış) olduğu için, bir StateListDrawable içine koymak için birkaçına ihtiyacınız olacaktır. fill_parent için

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 
    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/my_nine_patch" 
     android:text="button 1" 
     android:layout_weight="1" 
    /> 
    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/my_nine_patch" 
     android:text="button 2" 
     android:layout_weight="1" 
    /> 
    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/my_nine_patch" 
     android:text="button 3" 
     android:layout_weight="1" 
    /> 
    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/my_nine_patch" 
     android:text="button 4" 
     android:layout_weight="1" 
    /> 
</LinearLayout> 

Set tüm düğmeleri ve hepsini eşit ağırlık verin: Eğer NinePatch edindikten sonra, sadece bu yüzden böyle bir LinearLayout oluşturun. Ebeveynlere eşit bir şekilde sığacak şekilde esnektirler ve sabit bir piksel ya da daldırma boyutu belirtmekten endişelenmenize gerek yoktur. Ayrıca, çözünürlük ne olursa olsun, herhangi bir Android cihazına eşit olarak bölünür.

+0

1) WVGA800 çözünürlüğünü anladığım kadarıyla 800X480 çözünürlük (yükseklik x genişlik). Ve bu çözünürlük de HTC Desire spesifikasyonunda (benim test env) metioned. 4 tarafından doldurulan 480 120'dir, bu yüzden her düğme 120 piksel genişliğinde olmalıdır. 480 nasıl 320 olabilir (eğer öyleyse, o zaman gerçekten benim durumumda 4. düğme için yer yok)? 2) Görüntülerin degradeler içerdiği ve strechingden sonra blender göründüğü için "germe" den kaçınmaya çalışıyorum; Bu yüzden "gerdirme" uygulandı Ben en az bir kez benim tercih edilen çözünürlük için piksel mükemmel piksel elde etmek istiyorum. Birisi bu konuda daha fazla bilgi verebilir mi? – StevenR

+0

320 piksel yorumu benim değildi. Teorik olarak, düğmeleriniz 120 piksel olmalıdır, ancak aralarındaki dolguyu da unutmayın, ayrıca kullanıcı yatay yönelime döndüğünde ne olur? 9-yama görüntüleri ile gradyanları kaldırabilirsiniz, sadece biraz daha zor. İşte 9 yamalar hakkında daha fazla bilgi: http://forum.xda-developers.com/showthread.php?t=580351 – kcoppock

4

Resimlerinizi res/drawable içine koyarsanız, Android'in 160dpi'ye sahip olduğunu varsayar ve bunları farklı çözünürlükler için uygun şekilde ölçeklendirir.

Seçenekleriniz, düğme görüntülerini, 240dpi civarında yoğunluklar veya res/drawable-nodpi'un geçerli ekran yoğunluğundan bağımsız olarak hiçbir zaman ölçeklendirilmemesi için işaret ettiği res/drawable-hdpi işaretine sokmaktır.

Mizanpajlarda onları hala @drawable/whatever olarak görüyorsanız, motor en iyi eşleşmeyi otomatik olarak seçer.