Sumber Daya Alternatif
Sumber daya alternatif adalah sumber daya yang menargetkan perangkat tertentu atau konfigurasi run-time seperti bahasa saat ini, ukuran layar tertentu, atau kepadatan piksel. Jika Android dapat mencocokkan sumber daya yang lebih spesifik untuk perangkat atau konfigurasi tertentu daripada sumber daya default, sumber daya tersebut akan digunakan sebagai gantinya. Jika tidak menemukan sumber daya alternatif yang cocok dengan konfigurasi saat ini, sumber daya default akan dimuat. Bagaimana Android memutuskan sumber daya apa yang akan digunakan oleh aplikasi akan dibahas secara lebih rinci di bawah ini, di bagian Lokasi Sumber Daya
Sumber daya alternatif diatur sebagai sub-direktori di dalam folder Sumber Daya sesuai dengan jenis sumber daya, sama seperti sumber daya default. Nama subdirektori sumber daya alternatif dalam bentuk: ResourceType-Qualifier
Kualifikasi adalah nama yang mengidentifikasi konfigurasi perangkat tertentu. Mungkin ada lebih dari satu kualifikasi dalam satu nama, masing-masing dipisahkan oleh tanda hubung. Misalnya, cuplikan layar di bawah ini menunjukkan proyek sederhana yang memiliki sumber daya alternatif untuk berbagai konfigurasi seperti lokal, kepadatan layar, ukuran layar, dan orientasi:
Aturan berikut berlaku saat menambahkan kualifikasi ke jenis sumber daya:
Mungkin ada lebih dari satu kualifikasi, dengan setiap kualifikasi dipisahkan oleh tanda hubung.
Kualifikasi mungkin ditentukan hanya sekali.
Kualifikasi harus dalam urutan muncul dalam tabel di bawah ini.
Kemungkinan kualifikasi tercantum di bawah ini untuk referensi:
MCC dan MNC – Kode negara seluler (MCC) dan secara opsional kode jaringan seluler (MNC). Kartu SIM akan menyediakan PKS, sementara jaringan yang terhubung dengan perangkat akan menyediakan MNC. Meskipun dimungkinkan untuk menargetkan lokal menggunakan kode negara seluler, pendekatan yang direkomendasikan adalah menggunakan Kualifikasi bahasa yang ditentukan di bawah ini. Misalnya, untuk menargetkan sumber daya ke Jerman, kualifikasinya adalah
mcc262
. Untuk menargetkan sumber daya untuk T-Mobile di AS, kualifikasinya adalahmcc310-mnc026
. Untuk daftar lengkap kode negara seluler dan kode jaringan seluler, lihat http://mcc-mnc.com/.Bahasa – Kode bahasa ISO 639-1 dua huruf dan secara opsional diikuti dengan kode wilayah ISO-3166-alpha-2 dua huruf. Jika kedua kualifikasi disediakan, maka mereka dipisahkan oleh
-r
. Misalnya, untuk menargetkan lokal berbahasa Prancis, maka kualifikasifr
digunakan. Untuk menargetkan lokal Prancis-Kanada,fr-rCA
akan digunakan. Untuk daftar lengkap kode bahasa dan kode wilayah, lihat Kode untuk Representasi Nama Bahasa dan Nama negara dan elemen kode.Lebar Terkecil – Menentukan lebar layar terkecil yang dimaksudkan untuk dijalankan aplikasi. Dibahas secara lebih rinci dalam Membuat Sumber Daya untuk Berbagai Layar. Tersedia di API level 13 (Android 3.2) ke atas. Misalnya, kualifikasi
sw320dp
digunakan untuk menargetkan perangkat yang tinggi dan lebarnya setidaknya 320dp.Lebar tersedia – Lebar minimum layar dalam format wNdp, di mana N adalah lebar dalam piksel independen kepadatan. Nilai ini dapat berubah saat pengguna memutar perangkat. Dibahas secara lebih rinci dalam Membuat Sumber Daya untuk Berbagai Layar. Tersedia di API level 13 (Android 3.2) ke atas. Contoh: kualifikasi w720dp digunakan untuk menargetkan perangkat yang memiliki lebar minimal 720dp.
Tinggi yang Tersedia – Tinggi minimum layar dalam format hNdp, di mana N adalah tinggi dalam dp. Nilai ini dapat berubah saat pengguna memutar perangkat. Dibahas secara lebih rinci dalam Membuat Sumber Daya untuk Berbagai Layar. Tersedia di API level 13 (Android 3.2) ke atas. Misalnya, kualifikasi h720dp digunakan untuk menargetkan perangkat yang memiliki tinggi minimal 720dp
Ukuran Layar - Kualifikasi ini adalah generalisasi ukuran layar untuk sumber daya ini. Ini dibahas secara lebih rinci dalam Membuat Sumber Daya untuk Berbagai Layar. Nilai yang mungkin adalah
small
,normal
,large
, danxlarge
. Ditambahkan di API level 9 (Android 2.3/Android 2.3.1/Android 2.3.2)Aspek Layar - Ini didasarkan pada rasio aspek, bukan orientasi layar. Layar panjang lebih lebar. Ditambahkan di API level 4 (Android 1.6). Nilai yang mungkin panjang dan tidak lama.
Orientasi Layar – Orientasi layar potret atau lanskap. Ini dapat berubah selama masa pakai aplikasi. Nilai yang mungkin adalah
port
danland
.Mode Dock – Untuk perangkat di dermaga mobil atau dermaga meja. Ditambahkan di API level 8 (Android 2.2.x). Nilai yang mungkin adalah
car
dandesk
.Mode Malam – Apakah aplikasi berjalan di malam hari atau di siang hari atau tidak. Ini dapat berubah selama masa pakai aplikasi dan dimaksudkan untuk memberi pengembang kesempatan untuk menggunakan versi antarmuka yang lebih gelap di malam hari. Ditambahkan di API level 8 (Android 2.2.x). Nilai yang mungkin adalah
night
dannotnight
.Kepadatan Piksel Layar (dpi) – Jumlah piksel di area tertentu di layar fisik. Biasanya dinyatakan sebagai titik per inci (dpi). Kemungkinan nilai adalah:
ldpi
– Layar kepadatan rendah.mdpi
– Layar kepadatan sedanghdpi
– Layar kepadatan tinggixhdpi
– Layar kepadatan ekstra tingginodpi
– Sumber daya yang tidak akan diskalakantvdpi
– Diperkenalkan dalam API level 13 (Android 3.2) untuk layar antara mdpi dan hdpi.
Jenis Layar Sentuh – Menentukan jenis layar sentuh yang mungkin dimiliki perangkat. Nilai yang mungkin adalah
notouch
(tanpa layar sentuh),stylus
(layar sentuh resistif yang cocok untuk stylus), danfinger
(layar sentuh).Ketersediaan Keyboard – Menentukan jenis keyboard yang tersedia. Ini dapat berubah selama masa pakai aplikasi - misalnya ketika pengguna membuka keyboard perangkat keras. Kemungkinan nilai adalah:
keysexposed
– Perangkat memiliki keyboard yang tersedia. Jika tidak ada keyboard perangkat lunak yang diaktifkan, maka ini hanya digunakan ketika keyboard perangkat keras dibuka.keyshidden
– Perangkat memang memiliki keyboard perangkat keras tetapi tersembunyi dan tidak ada keyboard perangkat lunak yang diaktifkan.keyssoft
– perangkat mengaktifkan keyboard perangkat lunak.
Metode Input Teks Utama – Gunakan untuk menentukan jenis kunci perangkat keras apa yang tersedia untuk input. Kemungkinan nilai adalah:
nokeys
– Tidak ada kunci perangkat keras untuk input.qwerty
– Ada keyboard qwerty yang tersedia.12key
– Ada keyboard perangkat keras 12 kunci
Ketersediaan Kunci Navigasi – Saat navigasi 5 arah atau d-pad (directional-pad) tersedia. Ini dapat berubah selama masa pakai aplikasi Anda. Kemungkinan nilai adalah:
navexposed
– kunci navigasi tersedia untuk penggunanavhidden
– kunci navigasi tidak tersedia.
Metode Navigasi Non-Sentuhan Utama – Jenis navigasi yang tersedia di perangkat. Kemungkinan nilai adalah:
nonav
– satu-satunya fasilitas navigasi yang tersedia adalah layar sentuhdpad
– d-pad (directional-pad) tersedia untuk navigasitrackball
– perangkat memiliki trackball untuk navigasiwheel
– skenario yang jarang terjadi di mana ada satu atau beberapa roda arah yang tersedia
Versi Platform (tingkat API) – Tingkat API yang didukung oleh perangkat dalam format vN, di mana N adalah tingkat API yang ditargetkan. Misalnya, v11 akan menargetkan perangkat API level 11 (Android 3.0).
Untuk informasi selengkapnya tentang kualifikasi sumber daya, lihat Menyediakan Sumber Daya di situs web Pengembang Android.
Cara Android Menentukan Sumber Daya apa yang Akan Digunakan
Sangat mungkin dan kemungkinan aplikasi Android akan berisi banyak sumber daya. Penting untuk memahami bagaimana Android akan memilih sumber daya untuk aplikasi saat berjalan di perangkat.
Android menentukan basis sumber daya dengan melakukan iterasi melalui pengujian aturan berikut:
Hilangkan kualifikasi kontradiktor – misalnya, jika orientasi perangkat adalah potret, maka semua direktori sumber daya lanskap akan ditolak.
Abaikan kualifikasi tidak didukung - Tidak semua kualifikasi tersedia untuk semua tingkat API. Jika direktori sumber daya berisi kualifikasi yang tidak didukung oleh perangkat, direktori sumber daya tersebut akan diabaikan.
Identifikasi kualifikasi prioritas tertinggi berikutnya – mengacu pada tabel di atas pilih kualifikasi prioritas tertinggi berikutnya (dari atas ke bawah).
Pertahankan direktori sumber daya apa pun untuk kualifikasi - jika ada direktori sumber daya yang cocok dengan kualifikasi ke tabel di atas pilih kualifikasi prioritas tertinggi berikutnya (dari atas ke bawah).
Aturan ini juga diilustrasikan dalam diagram alur berikut:
Ketika sistem mencari sumber daya khusus kepadatan dan tidak dapat menemukannya, sistem akan mencoba menemukan sumber daya spesifik kepadatan lainnya dan menskalakannya. Android mungkin belum tentu menggunakan sumber daya default. Misalnya, saat mencari sumber daya kepadatan rendah dan tidak tersedia, Android dapat memilih versi kepadatan tinggi dari sumber daya melalui sumber daya kepadatan default atau menengah. Hal ini dilakukan karena sumber daya dengan kepadatan tinggi dapat diturunkan skalanya dengan faktor 0,5, yang akan mengakibatkan masalah visibilitas yang lebih sedikit daripada menurunkan skala sumber daya kepadatan sedang yang akan memerlukan faktor 0,75.
Sebagai contoh, pertimbangkan aplikasi yang memiliki direktori sumber daya yang dapat digambar berikut:
drawable
drawable-en
drawable-fr-rCA
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
drawable-port-ldpi
drawable-port-notouch-12key
Dan sekarang aplikasi dijalankan pada perangkat dengan konfigurasi berikut:
- Lokal – en-GB
- Orientasi – port
- Kepadatan layar – hdpi
- Jenis layar sentuh – notouch
- Metode input utama – 12key
Untuk memulainya, sumber daya Prancis dihilangkan saat mereka bertentangan en-GB
dengan lokal , meninggalkan kami dengan:
drawable
drawable-en
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
drawable-port-ldpi
drawable-port-notouch-12key
Selanjutnya, kualifikasi pertama dipilih dari tabel kualifikasi di atas: MCC dan MNC. Tidak ada direktori sumber daya yang berisi kualifikasi ini sehingga kode MCC/MNC diabaikan.
Kualifikasi berikutnya dipilih, yaitu Bahasa. Ada sumber daya yang cocok dengan kode bahasa. Semua direktori sumber daya yang tidak cocok dengan kode en
bahasa ditolak, sehingga daftar sumber daya sekarang:
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
Kualifikasi berikutnya yang ada adalah untuk orientasi layar, sehingga semua direktori sumber daya yang tidak cocok dengan orientasi port
layar dihilangkan:
drawable-en-port
drawable-en-port-ldpi
Selanjutnya adalah kualifikasi untuk kepadatan layar, ldpi
, yang menghasilkan pengecualian satu direktori sumber daya lagi:
drawable-en-port-ldpi
Sebagai hasil dari proses ini, Android akan menggunakan sumber daya yang dapat digambar di direktori drawable-en-port-ldpi
sumber daya untuk perangkat.
Catatan
Kualifikasi ukuran layar memberikan satu pengecualian untuk proses pemilihan ini. Dimungkinkan bagi Android untuk memilih sumber daya yang dirancang untuk layar yang lebih kecil daripada yang disediakan perangkat saat ini. Misalnya, perangkat layar besar dapat menggunakan sumber daya yang disediakan untuk layar berukuran normal. Namun kebalikan dari ini tidak benar: perangkat layar besar yang sama tidak akan menggunakan sumber daya yang disediakan untuk layar xlarge. Jika Android tidak dapat menemukan set sumber daya yang cocok dengan ukuran layar tertentu, aplikasi akan mengalami crash.