Farklı Ekran Desteği
Android,
cihaz ekranlarını iki genel özelliğe göre sınıflandırır: ebat ve yoğunluk(size
and density). Uygulamanızın ekran tasarımında dikkat etmeniz iki temel unsur da
bunlardır. Uygulamanızın farklı ebat ve yoğunluklar için farklı kaynaklara
sahip olmasını sağlamalısınız.
4
farklı ebat kategorisi vardır: small,normal,large,xlarge ,
4
farklı yoğunluk kategorisi vardır: low(ldpi), medium(mdpi), high(hdpi), extra
high(xhdpi) ,
Kullanacağınız farklı ekranlar
için farklı layout’lar ve bitmap’ler sağlarken farklı kaynakların hepsini,
tıpki dil desteğinde olduğu gibi farklı klasörlere yerleştirmelisiniz.
Ayrıca
landscape(yatay) veya portrait(dikey) ekran durumlarını da dikkate almanız
gerekmektedir.
Farklı Layoutlar Oluşturmak
Farklı
ekran ebatlarında kullanıcı deneyimini iyileştirmek için, desteklemek istediğin
her ekran boyutunda benzersiz XML Layout’lar tasarlamanız gerekir. Her bir
layout, -<screen_size>
eki ile uygun kaynak klasöründe yer almalıdır. Örnek, büyük ekranlar için tasarlayacağınız
Layout res/layout-large
dizininde yer almalıdır.
NOT:
Android,
tıpki dil desteğinde olduğu gibi bu işlemi de otomatik olarak gerçekleştirir.
Bu nedenle kullanıcı deneyimi açısından ebat konusundan çok tasarımınıza önem
göstermeniz yerinde bir davranış olacaktır.( Tasarımda kullandığınız View
öğelerinin konumları ve boyutlarının kullanıcı açısından çok önemli olmasını
dikkate almak)
Large ekran desteğine sahip bir projenin klasör yapısı;
ÖRNEK:
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
Kaynak dosyalarımızın isimleri tamamen aynı olmalıdır. Tabii
ki içerikleri ise hedef ekranlar için farklı olacaktır.
Kaynak kodunda XML arayüzüne referans vermek
ÖRNEK:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
Android dil desteğinde olduğu gibi otomatik olarak uygun
kaynak dosyasını ekrana çizecektir. Bunun nasıl yapıldığını merak ediyorsanız. Providing
Resources bölümüne göz atabilirsiniz.
Landscape(yatay) görünüm için kaynak dosyasına sahip bir
proje yapısı:
ÖRNEK:
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
layout/main.xml
varsayılan olarak portrait (dikey) tasarımı ifade eder.
Eğer her iki duruma sahip, landscape ve large ekran desteği
sağlıyorsanız;
MyProject/
res/
layout/ # default (portrait)
main.xml
layout-land/ # landscape
main.xml
layout-large/ # large (portrait)
main.xml
layout-large-land/ # large landscape
main.xml
Yukarıdaki şekle sahip bir proje
yapınız olmalıdır.
NOT:
Android 3.2 ve üzeri sürümler, ekran
ebatları için belirli ekran tasarımları tanımlarken density-independent pixels
yöntemiyle minimum genişlik ve yükseklik tabanlı gelişmiş yöntemler sunar. Bu
bölümde bu teknikten bahsedilmemektedir. Bunun için Designing
for Multiple Screens sayfasını ziyaret edebilirsiniz.
Farklı Bitmaps Oluşturmak
Uygulamanızın içerisinde her zaman, sınıflandırılmış
yoğunluk demetine uygun Bitmap kaynakları sağlamalısınız. Bu demet, small,
medium,high ve extra-high density’dir. Bu demet aracılığı ile tüm ekran
yoğunluklarında en iyi sonucu elde etmeniz sağlanır.
Bu görselleri oluştururken, ham kaynağınız ile çalışmaya
başlarken aşağıdaki ölçeklerde görseller üretmelisiniz.
·
Xhdpi : 2.0
·
Hdpi: 1.5
·
Mdpi: 1.0 (baseline-temel)
·
Ldpi:0.75
Bu ifadeler şu anlama gelmektedir. Eğer xhdpi cihazlar için
200x200 bir görsel hazırlıyorsanız; aynı kaynaklar farklı ölçekler için;
·
150x150 hdpi
·
100x100 mdpi
·
75x75 ldpi
Şeklinde üretilmelidir. Burada türetilen kaynak bitmaplar
diğer uygulamalarda olduğu gibi uygun dizinlere yerleştirilmelidir.
ÖRNEK:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
XML tasarımda veya kaynak kodundan dilediğiniz zaman bu
kaynaklara referans gösterebilirsiniz. Sistem uygun ölçeği otomatik olarak
getirecektir.
NOT:
Ldpi Low-Density her zaman gerekli değildir. Hdpi
tasarımları sisteme sağladığınızda, sistem bu kaynağı otomatik olarak ½
oranında ölçekleyerek ldpi ekranlara uygun hale getirir.
Icon oluşturmak ve diğer Bitmap fikirleri için Iconography
Design Guide sayfasını inceleyiniz.
Soru ve Görüşleriniz için: AndroidVeJava