2013-02-26 17 views
39

Nexus 7: 7" 1280x800nasıl 10" ve 7" düzenleri dahil etmek düzgün

Galaxy tab 10.1 10"

1280x800 benim app 7 ve 10 inçlik tabletlere çalıştırmak istiyorum.

7 inçlik tablet 10 için

  • düzen-sw600dp
  • düzen-sw600dp portlu

: As bildiğim kadarıyla, ben bunlar benim app düzen klasörleri dahil etmek zorunda inç tabletler

  • düzen-sw720dp
  • Layou t-sw720dp-portu

Nexus 7'de iyi çalışır, ancak sw600dp düzenlerini 10 "tablete yükler. Ben bu varsayılan klasörleri eklerseniz

.

  • düzeni bu

    den

  • düzen portlu

10" galaksi sekmesi yükler düzenleri sadece varsayılan düzeni eklerseniz klasörler ve sw600dp biri, bu Nexus7 çöker.

H ow Ben telefonları destekleme gerekiyor, 7" tablet ve 10" tablet, 10" galaksi sekmesi sw720p düzenleri yüklemez olur?

düzenleme: Ben de uygulamada böyle bir sorunla karşı karşıya am

+3

api düzeyiniz> 13 (sürüm> 3.2) nedir? –

+0

gökada sekmesi, api seviyesi 15'dir (4.0.4). Benim min api seviyem 8 ... – berestom

cevap

58

Sorun, varsayılan düzen klasörü olmadı.

Yalnızca sw600dp ve sw720dp klasörlerini kullanarak almaya çalıştım. Neden hala işe yaramadıkları konusunda hiçbir fikrim yok ama umrumda değil. Yine de swxxxdp < 3.2 kullanamıyorum, bu yüzden bunu vidalayın.

düzen bu, varsayılan bulunmaktadır: Bir uygulamayı yazmak isterseniz

Yani, bu telefonlar (2.2+), 7inç tabletler ve 10 inç tabletler, aşağıdaki oldschool şeyler kullanmak desteklemek zorundadır Telefonları desteklemeseniz bile gerekli!

düzen geniş 7" tablette (emülatörü ve Nexus7 çalışır)

düzen-xlarge 10" tablet (emülatörü ve galaxytab10.1 çalışır)

Other people geldi gelmiş için aynı sonucu da.

+1

Aynı fikirdeyim, katıştırıcı xlarge ve drawable-xlarge klasörünü ekledim . –

+0

Sana katılıyorum. sw600dp artık standart uygulama şekli değil. çözümünüzü gerçekten denemedim ama sanırım bu tek çıkış yolu. daha iyi yollar arıyoruz. Birinin paylaşacağını buldum. –

+0

tam olarak, sw600dp benim için çalışmadı.Bu yüzden düzen-büyük ve düzen-xlarge kullanılır. – TharakaNirmana

20

biçimlendirme. Ama bunun için iyi bir çözüm buldum. Ben tablet için tek düzen ve dizin adı layout-sw600dp olduğunu. bölüm yüksekliği ve genişliği sorunlarına geldiğinde Şimdi, ben dimensions ve font size ve diğer koçanları yerleştirdiğiniz birkaç farklı values dizin oluşturduk. Yani tablet ekranının layout hiçbir constant değer olacaktır.

androd:layout_width:"60dp" // i drop this scenario 

androd:layout_width:"@dimen/tab_width" // i used this scenario 

ve

values-xlarge 
values-large 

tüm değerler değerleriniz dizinden getirilmez gibi values dizin adı olacaktır. Farklı düzen oluşturmaz, ancak bir düzen birden çok kez kullanılabilir. Takip

Developer.android sitenin kelimelerdir.farklı cihaz türleri için bazı tasarımlar hedeflemesine yardımcı olmak için Yapılandırma örnekleri

, burada bazı tipik ekran genişlikleri için sayılardır: masanın 2'den boyut eleme kullanma

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 
480dp: a tweener tablet like the Streak (480x800 mdpi). 
600dp: a 7” tablet (600x1024 mdpi). 
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc). 

, başvurunuz arasında geçiş yapabilirsiniz genişlik ve/veya yükseklik için istediğiniz herhangi bir sayıyı kullanarak, tabletler ve tabletler için farklı düzen kaynaklarınız. 600dp Tablet düzeni tarafından desteklenen en küçük kullanılabilir genişliği ise Örneğin, sen düzenlerden bu iki set sağlayabilir:

el cihazları için

res/düzen/main_activity.xml #
res/düzen-sw600dp/main_activity.xml Bu ise tabletlerin

===

için #, sen düzeni 1280 * 720 için bunun yerine size farklılıkları karar vermek sağlayan bu şeyi kullanmalıdır layout-normal-xlarge yaratma layout-sw720dp altında olduğunu görebiliriz. layout-large-mdpi ve layout-large-ldpi'u farklı bir şekilde tanımlamak yerine, yalnızca smallest width ile tanımlamıyor musunuz? Çünkü, farklı görüntüler için drawables dizin sağlayan android, tek şey onun çözünürlüğüdür. Ve çözümün üstünde var.

Düzenleme

Sonra farklı düzenler geliştirmek olmalıdır. Başka seçenek yok. http://jamil.fluidsoul.net/2011/03/06/creating-android-applications-for-multiple-screen-sizes'da buldum.

Low density Small screens QVGA 240x320 (120dpi): 

layout-small-ldpi (240x320) 
layout-small-land-ldpi (320x240) 

Low density Normal screens WVGA400 240x400 (x432) (120dpi): 

layout-ldpi (240 x 400) 
layout-land-ldpi (400 x 240) 

Medium density Normal screens HVGA 320x480 (160dpi): 

layout-mdpi (320 x 480) 
layout-land-mdpi (480 x 320) 

Medium density Large screens HVGA 320x480 (160dpi): 

layout-large-mdpi (320 x 480) 
layout-large-land-mdpi (480 x 320) 

Galaxy Tab (240 dpi): 

layout-large (600 x 1024) 
layout-large-land (1024 x 600) 

High density Normal screens WVGA800 480x800 (x854) (240 dpi): 

layout-hdpi (480 x 800) 
layout-land-hdpi (800 x 480) 

Xoom (medium density large but 1280x800 res) (160 dpi): 

layout-xlarge (800 x 1280) 
layout-xlarge-land (1280 x 800) 
+0

olmalı, benim 7 "ve 10" düzenlerim tamamen farklı. – berestom

+0

Düzenlenmiş cevabımı görün. –

1

Bu çok garip, çünkü doğru şeyi yapıyorsunuz.

sw600dp niteleyicisi Nexus 7 tarafından seçilmelidir.
Varsa, sw720dp niteleyicisi Galaxy Sekmesi tarafından seçilmelidir.

Uygun bir düzeni bulmaya çalışırken çöktüğünden emin misiniz? Android doğru düzeni bulabilir, ancak xml dosyasındaki bir şey eksik olabilir ve çökme buna neden olabilir.

+0

SetContentView'da çöküyor. İşte başka bir örnek: ainol venus 7 "1280x800 160dpi, sw600dp düzenlerini yüklemiyor. – berestom

+0

Tekrar test ettim. Varsayılan düzenlerim 10", bunlar sw720dp klasöründeyken ve galaksi sekmesi yükler. sw600dp olanlar – berestom

+0

@berestom: sadece bilgi için: ainol venus, sw480dp, 'normal' ekran kategorisine sahiptir (çok büyük olmayan ekstra büyük). –

2

Evet, mizanpaja bağlı klasörleri kullanmalı, ayrıca aygıtın bağımsız düzenlerinin res/layout klasörünüze gittiğinden emin olmalısınız.

Bu, onların noktayı tekrar vurgulamak ancak Android geliştirici sitesinde belirtilen siz de büyük ve normal boyutlu cihazlar, uygulama söylüyorlar destekleyen bir uygulama üzerinde bir düzen-xlarge klasöründe kullanılabilir bir düzen varsa Daha küçük cihazlar olarak çökmek bu kaynak için herhangi bir eşleşme bulamayacaktır. olası her niteleyici türü için muhasebe eğer bu önleyebilirsiniz,

res/layout 

orada bir aygıttan bağımsız düzeni korunarak ancak bu hala daha güvenli bir seçenektir: Burada

iyi klasör yapısı, ile başlar . desteklemek istediğiniz herhangi bir özel cihaz ekran genişlikleri için böyle devam

res/layout-large 
res/layout-xlarge 
res/layout-sw600dp 
res/layout-sw720dp 
res/layout-sw800dp 

Ve: Eğer söz hakkından 7 ve 10 inçlik tabletler için belirli düzenleri eklemek istiyorsanız

, aşağıdakilerin tümünü kullanabilir. Sw600'ün mümkün olan en küçük genişliği desteklediğine dikkat edilmelidir, bu nedenle cihaz manzara tutulduğunda ekran genişliğinin kullanılmasını önler. Swxxxdp elemelerini kullanmak tercih edilir ancak bunlar API 13'e eklenmiştir, böylece eski Android işletim sistemi için hala büyük, xlarge'e ihtiyacınız olacaktır.

dpi'nin kullanımıyla ilgili olarak, SADECE bir yoğunluk için bir tane yoğunluk niteleyici ayarladıysanız, örneğin layout-large-mdpi örneğin büyük niteleyiciyle eşleşen tüm aygıtlar, başka bir klasör yerine buradan düzenler kullanacaktır; here hakkında okuyabileceğiniz En İyi Eşleşme kriterlerine gidin. Yoğunluğa eşleşmeden önce büyük bir cihazla eşleşecek, böylece mdpi yoğunluğu olmayan ekranlar bu düzenleri kullanmaya devam edecektir.

Bunu engellemek için, bunu layout-large-hdpi Yukarıdaki örnekten aşağıdaki siz de destekleyen diğer her türlü yoğunluklar için klasörleri dahil etmek zorunda ve bu klasörde yer alacak sen mdpi klasöründe eğer kullanmış düzenlerinin hdpi versiyonları Farklı olmalarını istiyorsun.

Ayrıca, düzenlerinizi çoğaltmaktan kaçının, yalnızca res/layout numaralı telefona ihtiyacınız varsa, kullanılmayan her klasöre aygıttan bağımsız düzenler kopyalamayın, yalnızca bu niteleyiciler için gereken düzenleri klasörlerde tutmaya ve düzgün bir şekilde düzenlemeye çalışın. Yoğunluk/boyut birleşimi için yanlış klasörün kullanılmasını engellemek için klasörlerinizin uygun öncelik sırasına göre düzenlendiğinden emin olun.

+0

çalışmıyor. Her yere girip çıktım. aynı zamanda başka insanlar da aynı soruna sahipti. sw600dp çalışmıyor. oneplus'ım için sw600dp klasör düzenini çekiyor. –

İlgili konular