Home | History | Annotate | Download | only in resources
      1 page.title=Menyediakan Sumber Daya
      2 parent.title=Sumber Daya Aplikasi
      3 parent.link=index.html
      4 @jd:body
      5 
      6 <div id="qv-wrapper">
      7 <div id="qv">
      8   <h2>Tampilan Cepat</h2>
      9   <ul>
     10     <li>Berbagai tipe sumber daya termasuk dalam subdirektori {@code res/}</li>
     11     <li>Sumber daya alternatif menyediakan file sumber daya dengan konfigurasi tertentu</li>
     12     <li>Sertakan selalu sumber daya default agar aplikasi Anda tidak bergantung pada
     13 konfigurasi perangkat tertentu</li>
     14   </ul>
     15   <h2>Dalam dokumen ini</h2>
     16   <ol>
     17     <li><a href="#ResourceTypes">Mengelompokkan Tipe Sumber Daya</a></li>
     18     <li><a href="#AlternativeResources">Menyediakan Sumber Daya Alternatif</a>
     19       <ol>
     20         <li><a href="#QualifierRules">Aturan penamaan qualifier</a></li>
     21         <li><a href="#AliasResources">Membuat sumber daya alias</a></li>
     22       </ol>
     23     </li>
     24     <li><a href="#Compatibility">Menyediakan Kompatibilitas Perangkat Terbaik dengan Sumber Daya</a></li>
     25     <li><a href="#BestMatch">Cara Android Menemukan Sumber Daya yang Paling Cocok</a></li>
     26   </ol>
     27 
     28   <h2>Lihat juga</h2>
     29   <ol>
     30     <li><a href="accessing-resources.html">Mengakses Sumber Daya</a></li>
     31     <li><a href="available-resources.html">Tipe Sumber Daya</a></li>
     32     <li><a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
     33 Layar</a></li>
     34   </ol>
     35 </div>
     36 </div>
     37 
     38 <p>Anda harus selalu mengeksternalkan sumber daya aplikasi seperti gambar dan string dari kode
     39 , agar Anda bisa memeliharanya secara independen. Anda juga harus menyediakan sumber daya alternatif untuk
     40 konfigurasi perangkat tertentu, dengan mengelompokkannya dalam direktori sumber daya bernama khusus. Saat
     41 runtime, Android menggunakan sumber daya yang sesuai berdasarkan konfigurasi saat ini. Misalnya, Anda mungkin
     42 ingin menyediakan layout UI berbeda bergantung pada ukuran layar atau string berbeda bergantung pada
     43 pengaturan bahasa.</p>
     44 
     45 <p>Setelah mengeksternalkan sumber daya aplikasi, Anda dapat mengaksesnya menggunakan
     46 ID sumber daya yang dibuat dalam kelas {@code R} proyek Anda. Cara menggunakan
     47 sumber daya dalam aplikasi dibahas dalam <a href="accessing-resources.html">Mengakses
     48 Sumber Daya</a>. Dokumen ini menampilkan cara mengelompokkan sumber daya
     49 dalam proyek Android Anda dan menyediakan sumber daya alternatif untuk konfigurasi perangkat tertentu.</p>
     50 
     51 
     52 <h2 id="ResourceTypes">Mengelompokkan Tipe Sumber Daya</h2>
     53 
     54 <p>Anda harus menempatkan setiap tipe sumber daya dalam subdirektori spesifik pada direktori
     55 {@code res/} proyek. Misalnya, inilah hierarki file untuk proyek sederhana:</p>
     56 
     57 <pre class="classic no-pretty-print">
     58 MyProject/
     59     src/  <span style="color:black">
     60         MyActivity.java  </span>
     61     res/
     62         drawable/  <span style="color:black">
     63             graphic.png  </span>
     64         layout/  <span style="color:black">
     65             main.xml
     66             info.xml</span>
     67         mipmap/  <span style="color:black">
     68             icon.png </span>
     69         values/  <span style="color:black">
     70             strings.xml  </span>
     71 </pre>
     72 
     73 <p>Seperti yang Anda lihat dalam contoh ini, direktori {@code res/} berisi semua sumber daya (dalam
     74 subdirektori): sumber daya gambar, dua sumber daya layout, direktori {@code mipmap/} untuk ikon
     75 launcher, dan satu file sumber daya string. Nama direktori
     76 sumber daya penting dan dijelaskan dalam tabel 1.</p>
     77 
     78 <p class="note"><strong>Catatan:</strong> Untuk informasi selengkapnya tentang menggunakan folder mipmap, lihat
     79 <a href="{@docRoot}tools/projects/index.html#mipmap">Mengelola Ikhtisar Proyek</a>.</p>
     80 
     81 <p class="table-caption" id="table1"><strong>Tabel 1.</strong> Direktori sumber daya
     82 didukung dalam direktori proyek {@code res/}.</p>
     83 
     84 <table>
     85   <tr>
     86     <th scope="col">Direktori</th>
     87     <th scope="col">Tipe Sumber Daya</th>
     88   </tr>
     89 
     90   <tr>
     91     <td><code>animator/</code></td>
     92     <td>File XML yang mendefinisikan <a href="{@docRoot}guide/topics/graphics/prop-animation.html">animasi
     93 properti</a>.</td>
     94   </tr>
     95 
     96   <tr>
     97     <td><code>anim/</code></td>
     98     <td>File XML yang mendefinisikan <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">animasi
     99 tween</a>. (Animasi properti juga dapat disimpan dalam direktori ini, namun
    100 direktori {@code animator/} lebih disukai bagi animasi properti agar kedua tipe
    101 ini dapat dibedakan.)</td>
    102   </tr>
    103 
    104   <tr>
    105     <td><code>color/</code></td>
    106     <td>File XML yang mendefinisikan daftar status warna. Lihat <a href="color-list-resource.html">Sumber Daya
    107 Daftar Status Warna</a></td>
    108   </tr>
    109 
    110   <tr>
    111     <td><code>drawable/</code></td>
    112 
    113     <td><p>File bitmap ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) atau file XML yang
    114 dikompilasi menjadi subtipe sumber daya drawable berikut:</p>
    115       <ul>
    116         <li>File bitmap</li>
    117         <li>Nine-Patches (bitmap yang dapat diubah ukurannya)</li>
    118         <li>Daftar status</li>
    119         <li>Bentuk</li>
    120         <li>Drawable animasi</li>
    121         <li>Drawable lainnya</li>
    122       </ul>
    123       <p>Lihat <a href="drawable-resource.html">Sumber Daya Drawable</a>.</p>
    124     </td>
    125   </tr>
    126 
    127   <tr>
    128     <td><code>mipmap/</code></td>
    129     <td>File drawable untuk densitas ikon launcher yang berbeda. Untuk informasi selengkapnya tentang
    130  mengelola ikon launcher dengan folder {@code mipmap/}, lihat
    131 <a href="{@docRoot}tools/project/index.html#mipmap">Mengelola Ikhtisar Proyek</a>.</td>
    132   </tr>
    133 
    134   <tr>
    135     <td><code>layout/</code></td>
    136     <td>File XML yang mendefinisikan layout antarmuka pengguna.
    137         Lihat <a href="layout-resource.html">Sumber Daya Layout</a>.</td>
    138   </tr>
    139 
    140   <tr>
    141     <td><code>menu/</code></td>
    142     <td>File XML yang mendefinisikan menu aplikasi, seperti Menu Opsi, Menu Konteks, atau Sub
    143 Menu. Lihat <a href="menu-resource.html">Sumber Daya Menu</a>.</td>
    144   </tr>
    145 
    146   <tr>
    147     <td><code>raw/</code></td>
    148     <td><p>File tak didukung yang akan disimpan dalam bentuk mentah. Untuk membuka sumber daya ini dengan
    149 {@link java.io.InputStream} mentah, panggil {@link android.content.res.Resources#openRawResource(int)
    150 Resources.openRawResource()} dengan ID sumber daya, yaitu {@code R.raw.<em>filename</em>}.</p>
    151       <p>Akan tetapi, jika Anda butuh akses ke nama file asli dan hierarki file, Anda bisa mempertimbangkan
    152 untuk menyimpan beberapa sumber daya dalam direktori {@code
    153 assets/} (sebagai ganti {@code res/raw/}). File dalam {@code assets/} tidak diberi
    154 ID sumber daya, jadi Anda bisa membacanya hanya dengan menggunakan {@link android.content.res.AssetManager}.</p></td>
    155   </tr>
    156 
    157   <tr>
    158     <td><code>values/</code></td>
    159     <td><p>File XML yang berisi nilai-nilai sederhana, seperti string, integer, dan warna.</p>
    160       <p>Walaupun file sumber daya XML dalam subdirektori {@code res/} lainnya mendefinisikan satu sumber daya
    161 berdasarkan nama file XML, file dalam direktori {@code values/} menggambarkan beberapa sumber daya.
    162 Untuk file dalam direktori ini, setiap anak elemen {@code &lt;resources&gt;} mendefinisikan satu sumber
    163 daya. Misalnya, elemen {@code &lt;string&gt;} membuat sumber daya
    164 {@code R.string} dan elemen {@code &lt;color&gt;} membuat sumber daya {@code R.color}
    165 .</p>
    166       <p>Karena setiap sumber daya didefinisikan dengan elemen XML-nya sendiri, Anda bisa bebas menamai file
    167 ini dan menempatkan tipe sumber daya berbeda dalam satu file. Akan tetapi, agar jelas, Anda mungkin
    168 perlu menempatkan tipe sumber daya unik dalam file berbeda. Misalnya, berikut ini adalah beberapa ketentuan
    169 penamaan file untuk sumber daya yang dapat Anda buat dalam direktori ini:</p>
    170       <ul>
    171         <li>arrays.xml untuk larik sumber daya tipe (<a href="more-resources.html#TypedArray">larik bertipe</a>).</li>
    172         <li>colors.xml untuk <a href="more-resources.html#Color">nilai warna</a></li>
    173         <li>dimens.xml untuk <a href="more-resources.html#Dimension">nilai dimensi</a>.</li>
    174         <li>strings.xml untuk <a href="string-resource.html">nilai
    175 string</a>.</li>
    176         <li>styles.xml untuk <a href="style-resource.html">gaya</a>.</li>
    177       </ul>
    178       <p>Lihat <a href="string-resource.html">Sumber Daya String</a>,
    179         <a href="style-resource.html">Sumber Daya Gaya</a>, dan 
    180         <a href="more-resources.html">Tipe Sumber Daya Lainnya</a>.</p>
    181     </td>
    182   </tr>
    183 
    184   <tr>
    185     <td><code>xml/</code></td>
    186     <td>File XML tak didukung yang bisa dibaca saat runtime dengan memanggil {@link
    187 android.content.res.Resources#getXml(int) Resources.getXML()}. Berbagai file konfigurasi XML
    188 harus disimpan di sini, seperti <a href="{@docRoot}guide/topics/search/searchable-config.html">konfigurasi yang dapat dicari</a>.
    189 <!-- or preferences configuration. --></td>
    190   </tr>
    191 </table>
    192 
    193 <p class="caution"><strong>Perhatian:</strong> Jangan menyimpan file sumber daya secara langsung dalam
    194 direktori {@code res/}&mdash; karena akan menyebabkan kesalahan compiler.</p>
    195 
    196 <p>Untuk informasi selengkapnya tentang tipe sumber daya tertentu, lihat dokumentasi <a href="available-resources.html">Tipe Sumber Daya</a>.</p>
    197 
    198 <p>Sumber daya yang disimpan dalam subdirektori yang didefinisikan dalam tabel 1 adalah sumber daya
    199 "default" Anda. Berarti sumber daya ini mendefinisikan desain default dan konten untuk aplikasi Anda.
    200 Akan tetapi, beberapa tipe perangkat berbasis Android mungkin memanggil tipe sumber daya yang berbeda.
    201 Misalnya, jika perangkat memiliki layar yang lebih besar daripada layar normal, maka Anda harus
    202 menyediakan sumber daya layout berbeda yang memanfaatkan ruang layar yang lebih besar. Atau, jika perangkat
    203 memiliki pengaturan bahasa berbeda, maka Anda harus menyediakan sumber daya string berbeda yang menerjemahkan teks dalam
    204 antarmuka pengguna Anda. Untuk menyediakan sumber daya berbeda ini bagi
    205 konfigurasi perangkat yang berbeda, Anda harus menyediakan sumber daya alternatif, selain sumber
    206 daya default.</p>
    207 
    208 
    209 <h2 id="AlternativeResources">Menyediakan Sumber Daya Alternatif</h2>
    210 
    211 
    212 <div class="figure" style="width:429px">
    213 <img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
    214 <p class="img-caption">
    215 <strong>Gambar 1.</strong> Dua perangkat berbeda, masing-masing menggunakan sumber daya layout berbeda.</p>
    216 </div>
    217 
    218 <p>Hampir setiap aplikasi harus menyediakan sumber daya alternatif untuk mendukung konfigurasi
    219 perangkat tertentu. Misalnya, Anda harus menyertakan sumber daya drawable alternatif untuk densitas layar
    220 berbeda dan sumber daya string alternatif untuk bahasa yang berbeda. Saat runtime, Android
    221 akan mendeteksi konfigurasi perangkat aktif dan memuat
    222 sumber daya yang sesuai untuk aplikasi Anda.</p>
    223 
    224 <p>Untuk menyebutkan alternatif konfigurasi tertentu untuk satu set sumber daya:</p>
    225 <ol>
    226   <li>Buat direktori baru dalam {@code res/} yang dinamai dalam bentuk {@code
    227 <em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>}.
    228     <ul>
    229       <li><em>{@code &lt;resources_name&gt;}</em> adalah nama direktori dari sumber daya default
    230 terkait (didefinisikan dalam tabel 1).</li>
    231       <li><em>{@code &lt;qualifier&gt;}</em> adalah nama yang menetapkan konfigurasi individu
    232 yang akan digunakan sumber daya ini (didefinisikan dalam tabel 2).</li>
    233     </ul>
    234     <p>Anda bisa menambahkan lebih dari satu <em>{@code &lt;qualifier&gt;}</em>. Pisahkan masing-masing
    235 dengan tanda hubung.</p>
    236     <p class="caution"><strong>Perhatian:</strong> Saat menambahkan beberapa qualifier, Anda
    237 harus menempatkannya dalam urutan yang sama dengan yang tercantum dalam tabel 2. Jika urutan qualifier
    238 salah, sumber daya akan diabaikan.</p>
    239   </li>
    240   <li>Simpan masing-masing sumber daya alternatif dalam direktori baru ini. File sumber daya harus dinamai
    241 sama persis dengan file sumber daya default.</li>
    242 </ol>
    243 
    244 <p>Misalnya, berikut ini beberapa sumber daya default dan sumber daya alternatif:</p>
    245 
    246 <pre class="classic no-pretty-print">
    247 res/
    248     drawable/   <span style="color:black">
    249         icon.png
    250         background.png    </span>
    251     drawable-hdpi/  <span style="color:black">
    252         icon.png
    253         background.png  </span>
    254 </pre>
    255 
    256 <p>Qualifier {@code hdpi} menunjukkan bahwa sumber daya dalam direktori itu diperuntukkan bagi perangkat dengan
    257 layar densitas tinggi. Gambar di masing-masing direktori drawable memiliki ukuran untuk densitas layar
    258 tertentu, namun nama filenya persis
    259 sama. Dengan demikian, ID sumber daya yang Anda gunakan untuk mengacu gambar {@code icon.png} atau @code
    260 background.png} selalu sama, namun Android memilih
    261 versi masing-masing sumber daya yang paling cocok dengan perangkat saat ini, dengan membandingkan informasi konfigurasi
    262 perangkat dengan qualifier dalam nama direktori sumber daya.</p>
    263 
    264 <p>Android mendukung beberapa qualifier konfigurasi dan Anda dapat
    265 menambahkan beberapa qualifier ke satu nama direktori, dengan memisahkan setiap qualifier dengan tanda hubung. Tabel 2
    266 berisi daftar qualifier konfigurasi yang valid, dalam urutan prioritas&mdash;jika Anda menggunakan beberapa
    267 qualifier sebagai direktori sumber daya, Anda harus menambahkannya ke nama direktori sesuai urutan
    268 yang tercantum dalam tabel.</p>
    269 
    270 
    271 <p class="table-caption" id="table2"><strong>Tabel 2.</strong> Nama-nama
    272 qualifier konfigurasi.</p>
    273 <table>
    274     <tr>
    275         <th>Konfigurasi</th>
    276         <th>Nilai-nilai Qualifier</th>
    277         <th>Keterangan</th>
    278     </tr>
    279     <tr id="MccQualifier">
    280       <td>MCC dan MNC</td>
    281       <td>Contoh:<br/>
    282         <code>mcc310</code><br/>
    283         <code><nobr>mcc310-mnc004</nobr></code><br/>
    284         <code>mcc208-mnc00</code><br/>
    285         dll.
    286       </td>
    287       <td>
    288         <p>Kode negara seluler (MCC), bisa diikuti dengan kode jaringan seluler (MNC)
    289  dari kartu SIM dalam perangkat. Misalnya, <code>mcc310</code> adalah AS untuk operator mana saja,
    290  <code>mcc310-mnc004</code> adalah AS untuk Verizon, dan <code>mcc208-mnc00</code> Prancis untuk
    291 Orange.</p>
    292         <p>Jika perangkat menggunakan koneksi radio (ponsel GSM), nilai-nilai MCC dan MNC berasal 
    293 dari kartu SIM.</p>
    294         <p>Anda juga dapat menggunakan MNC saja (misalnya, untuk menyertakan sumber daya legal
    295 spesifik untuk negara itu di aplikasi Anda). Jika Anda perlu menetapkan hanya berdasarkan bahasa, maka gunakan qualifier
    296 <em>bahasa dan wilayah</em> sebagai gantinya (akan dibahas nanti). Jika Anda memutuskan untuk menggunakan qualifier MCC dan
    297 MNC, Anda harus melakukannya dengan hati-hati dan menguji apakah qualifier itu berjalan sesuai harapan.</p>
    298         <p>Lihat juga bidang konfigurasi {@link
    299 android.content.res.Configuration#mcc}, dan {@link
    300 android.content.res.Configuration#mnc}, yang masing-masing menunjukkan kode negara seluler saat ini
    301 dan kode jaringan seluler.</p>
    302       </td>
    303     </tr>
    304     <tr id="LocaleQualifier">
    305       <td>Bahasa dan wilayah</td>
    306       <td>Contoh:<br/>
    307         <code>en</code><br/>
    308         <code>fr</code><br/>
    309         <code>en-rUS</code><br/>
    310         <code>fr-rFR</code><br/>
    311         <code>fr-rCA</code><br/>
    312         dll.
    313       </td>
    314       <td><p>Bahasa didefinisikan oleh kode bahasa dua huruf <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
    315 639-1</a>, bisa juga diikuti dengan kode wilayah 
    316 dua huruf <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
    317 3166-1-alpha-2</a> (diawali dengan huruf kecil "{@code r}").
    318         </p><p>
    319         Kode <em>tidak</em> membedakan huruf besar atau kecil; awalan {@code r} akan digunakan untuk
    320 membedakan bagian wilayah.
    321         Anda tidak bisa menetapkan wilayah saja.</p>
    322         <p>Ini bisa berubah selama masa pakai
    323 aplikasi Anda jika pengguna mengubah bahasanya dalam pengaturan sistem. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang
    324 bagaimana hal ini dapat memengaruhi aplikasi Anda selama runtime.</p>
    325         <p>Lihat <a href="localization.html">Pelokalan</a> untuk panduan lengkap melokalkan
    326 aplikasi Anda ke bahasa lain.</p>
    327         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#locale} yang menunjukkan
    328 bahasa setempat yang digunakan saat ini.</p>
    329       </td>
    330     </tr>
    331     <tr id="LayoutDirectionQualifier">
    332       <td>Arah Layout</td>
    333       <td><code>ldrtl</code><br/>
    334         <code>ldltr</code><br/>
    335       </td>
    336       <td><p>Arah layout aplikasi Anda. {@code ldrtl} berarti "arah layout dari kanan ke kiri".
    337  {@code ldltr} berarti "arah layout dari kiri ke kanan" dan merupakan nilai implisit default.
    338       </p>
    339       <p>Ini bisa berlaku untuk sumber daya mana pun seperti layout, drawable, atau nilai-nilai.
    340       </p>
    341       <p>Misalnya, jika Anda ingin memberikan beberapa layout khusus untuk bahasa Arab dan beberapa
    342 layout umum untuk setiap bahasa lainnya yang menggunakan "kanan-ke-kiri" lainnya (seperti bahasa Persia atau Ibrani) maka Anda akan memiliki:
    343       </p>
    344 <pre class="classic no-pretty-print">
    345 res/
    346     layout/   <span style="color:black">
    347         main.xml  </span>(Default layout)
    348     layout-ar/  <span style="color:black">
    349         main.xml  </span>(Specific layout for Arabic)
    350     layout-ldrtl/  <span style="color:black">
    351         main.xml  </span>(Any "right-to-left" language, except
    352                   for Arabic, because the "ar" language qualifier
    353                   has a higher precedence.)
    354 </pre>
    355         <p class="note"><strong>Catatan:</strong> Untuk mengaktifkan fitur
    356 layout kanan-ke-kiri untuk aplikasi, Anda harus mengatur <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
    357         supportsRtl}</a> ke {@code "true"} dan mengatur <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> ke 17 atau yang lebih tinggi.</p>
    358         <p><em>Ditambahkan dalam API level 17.</em></p>
    359       </td>
    360     </tr>
    361     <tr id="SmallestScreenWidthQualifier">
    362       <td>smallestWidth</td>
    363       <td><code>sw&lt;N&gt;dp</code><br/><br/>
    364         Contoh:<br/>
    365         <code>sw320dp</code><br/>
    366         <code>sw600dp</code><br/>
    367         <code>sw720dp</code><br/>
    368         dll.
    369       </td>
    370       <td>
    371         <p>Ukuran dasar layar, sebagaimana yang ditunjukkan oleh dimensi terpendek dari area layar
    372 yang tersedia. Secara spesifik, smallestWidth perangkat adalah yang terpendek dari
    373 tinggi dan lebar layar yang tersedia (Anda dapat menganggapnya sebagai "lebar terkecil yang memungkinkan" untuk layar). Anda bisa
    374 menggunakan qualifier ini untuk memastikan bahwa, apa pun orientasi layar saat ini, aplikasi
    375 Anda memiliki paling tidak {@code &lt;N&gt;} dps dari lebar yang tersedia untuk UI-nya.</p>
    376         <p>Misalnya, jika layout mengharuskan dimensi layar terkecilnya setiap saat paling tidak
    377 600 dp, maka Anda dapat menggunakan qualifer ini untuk membuat sumber daya layout, {@code
    378 res/layout-sw600dp/}. Sistem akan menggunakan sumber daya ini hanya bila dimensi layar terkecil yang
    379 tersedia paling tidak 600 dp, tanpa mempertimbangkan apakah sisi 600 dp adalah tinggi atau
    380 lebar yang dipersepsikan pengguna. SmallestWidth adalah karakteristik ukuran layar tetap dari perangkat; <strong>smallestWidth
    381 perangkat tidak berubah saat orientasi layar berubah</strong>.</p>
    382         <p>SmallestWidth perangkat memperhitungkan dekorasi layar dan UI sistem. Misalnya
    383 , jika perangkat memiliki beberapa elemen UI persisten pada layar yang menghitung ruang di sepanjang
    384 sumbu smallestWidth, sistem akan mendeklarasikan smallestWidth lebih kecil daripada ukuran layar sebenarnya,
    385 karena itu adalah piksel layar yang tidak tersedia untuk UI Anda. Sehingga nilai yang Anda
    386 gunakan haruslah merupakan dimensi terkecil sebenarnya yang <em>dibutuhkan oleh layout Anda</em> (biasanya, nilai ini adalah
    387 "lebar terkecil" yang didukung layout Anda, apa pun orientasi layar saat ini).</p>
    388         <p>Sebagian nilai yang mungkin Anda gunakan untuk ukuran layar umum:</p>
    389         <ul>
    390           <li>320, untuk perangkat berkonfigurasi layar seperti:
    391             <ul>
    392               <li>240x320 ldpi (handset QVGA)</li>
    393               <li>320x480 mdpi (handset)</li>
    394               <li>480x800 hdpi (handset densitas tinggi)</li>
    395             </ul>
    396           </li>
    397           <li>480, untuk layar seperti 480x800 mdpi (tablet/handset).</li>
    398           <li>600, untuk layar seperti 600x1024 mdpi (tablet 7").</li>
    399           <li>720, untuk layar seperti 720x1280 mdpi (tablet 10").</li>
    400         </ul>
    401         <p>Bila aplikasi Anda menyediakan beberapa direktori sumber daya dengan nilai yang berbeda untuk
    402 qualifier smallestWidth terkecil, sistem akan menggunakan nilai terdekat dengan (tanpa melebihi)
    403 smallestWidth perangkat. </p>
    404         <p><em>Ditambahkan dalam API level 13.</em></p>
    405         <p>Lihat juga atribut <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
    406 android:requiresSmallestWidthDp}</a>, yang mendeklarasikan smallestWidth minimum yang
    407 kompatibel dengan aplikasi Anda, dan bidang konfigurasi {@link
    408 android.content.res.Configuration#smallestScreenWidthDp}, yang menyimpan nilai
    409 smallestWidth perangkat.</p>
    410         <p>Untuk informasi selengkapnya tentang mendesain untuk layar berbeda dan menggunakan
    411 qualifier ini, lihat panduan pengembang <a href="{@docRoot}guide/practices/screens_support.html">Mendukung
    412 Multi Layar</a>.</p>
    413       </td>
    414     </tr>
    415     <tr id="ScreenWidthQualifier">
    416       <td>Lebar yang tersedia</td>
    417       <td><code>w&lt;N&gt;dp</code><br/><br/>
    418         Contoh:<br/>
    419         <code>w720dp</code><br/>
    420         <code>w1024dp</code><br/>
    421         dll.
    422       </td>
    423       <td>
    424         <p>Menetapkan lebar layar minimum yang tersedia, di unit {@code dp} yang
    425 menggunakan sumber daya&mdash;yang didefinisikan oleh nilai <code>&lt;N&gt;</code>.  Nilai konfigurasi ini
    426  akan berubah bila orientasi
    427 berubah antara lanskap dan potret agar cocok dengan lebar sebenarnya saat ini.</p>
    428         <p>Bila aplikasi Anda menyediakan beberapa direktori sumber daya dengan nilai yang berbeda
    429  untuk konfigurasi ini, sistem akan menggunakan nilai terdekat dengan (tanpa melebihi)
    430  lebar layar perangkat saat ini.  Nilai
    431 di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa 
    432 elemen UI persisten di tepi kiri atau kanan, layar 
    433 menggunakan nilai lebar yang lebih kecil daripada ukuran layar sebenarnya, yang memperhitungkan
    434 elemen UI ini dan mengurangi ruang aplikasi yang tersedia.</p>
    435         <p><em>Ditambahkan dalam API level 13.</em></p>
    436         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenWidthDp}
    437  yang menyimpan lebar layar saat ini.</p>
    438         <p>Untuk informasi selengkapnya tentang mendesain untuk layar berbeda dan menggunakan
    439 qualifier ini, lihat panduan pengembang <a href="{@docRoot}guide/practices/screens_support.html">Mendukung
    440 Multi Layar</a>.</p>
    441       </td>
    442     </tr>
    443     <tr id="ScreenHeightQualifier">
    444       <td>Tinggi yang tersedia</td>
    445       <td><code>h&lt;N&gt;dp</code><br/><br/>
    446         Contoh:<br/>
    447         <code>h720dp</code><br/>
    448         <code>h1024dp</code><br/>
    449         dll.
    450       </td>
    451       <td>
    452         <p>Menetapkan tinggi layar minimum yang tersedia, dalam satuan "dp" yang harus digunakan
    453 sumber daya &mdash;bersama nilai yang didefinisikan oleh <code>&lt;N&gt;</code>.  Nilai konfigurasi ini
    454  akan berubah saat orientasi
    455 berubah antara lanskap dan potret agar cocok dengan tinggi sebenarnya saat ini.</p>
    456         <p>Bila aplikasi menyediakan beberapa direktori sumber daya dengan nilai yang berbeda
    457  untuk konfigurasi ini, sistem akan menggunakan nilai yang terdekat dengan (tanpa melebihi)
    458  tinggi layar perangkat saat ini.  Nilai 
    459 di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa
    460 elemen UI persisten di tepi atas atau bawah, layar akan
    461 menggunakan nilai tinggi yang lebih kecil daripada ukuran layar sebenarnya, memperhitungkan
    462 elemen UI ini dan mengurangi ruang aplikasi yang tersedia.  Dekorasi 
    463 layar yang tidak tetap (misalnya baris status (status-bar) telepon yang bisa 
    464 disembunyikan saat layar penuh) di sini <em>tidak</em> diperhitungkan, demikian pula 
    465 dekorasi jendela seperti baris judul (title-bar)atau baris tindakan (action-bar), jadi aplikasi harus disiapkan 
    466 untuk menangani ruang yang agak lebih kecil daripada yang ditetapkan.
    467         <p><em>Ditambahkan dalam API level 13.</em></p>
    468         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenHeightDp}
    469  yang menyimpan lebar layar saat ini.</p>
    470         <p>Untuk informasi selengkapnya tentang mendesain untuk layar berbeda dan menggunakan
    471 qualifier ini, lihat panduan pengembang <a href="{@docRoot}guide/practices/screens_support.html">Mendukung
    472 Multi Layar</a>.</p>
    473       </td>
    474     </tr>
    475     <tr id="ScreenSizeQualifier">
    476       <td>Ukuran layar</td>
    477       <td>
    478         <code>small</code><br/>
    479         <code>normal</code><br/>
    480         <code>large</code><br/>
    481         <code>xlarge</code>
    482       </td>
    483       <td>
    484         <ul class="nolist">
    485         <li>{@code small}: Layar yang berukuran serupa dengan 
    486 layar QVGA densitas rendah. Ukuran layout minimum untuk layar kecil 
    487 adalah sekitar 320x426 satuan dp.  Misalnya QVGA densitas rendah 
    488 dan VGA densitas tinggi.</li>
    489         <li>{@code normal}: Layar yang berukuran serupa dengan 
    490 layar HVGA densitas sedang. Ukuran layout minimum untuk
    491 layar normal adalah sekitar 320x470 satuan dp.  Contoh layar seperti itu adalah 
    492 WQVGA densitas rendah, HVGA densitas sedang, WVGA
    493      densitas tinggi.</li>
    494         <li>{@code large}: Layar yang berukuran serupa dengan 
    495 layar VGA densitas sedang.
    496         Ukuran layout minimum untuk layar besar adalah sekitar 480x640 satuan dp.
    497         Misalnya layar VGA dan WVGA densitas sedang.</li>
    498         <li>{@code xlarge}: Layar yang jauh lebih besar dari layar HVGA 
    499 densitas sedang tradisional. Ukuran layout minimum untuk 
    500 layar ekstra besar adalah sekitar 720x960 satuan dp.  Perangkat dengan layar ekstra besar 
    501 seringkali terlalu besar untuk dibawa dalam saku dan kemungkinan besar
    502  berupa perangkat bergaya tablet. <em>Ditambahkan dalam API level 9.</em></li>
    503         </ul>
    504         <p class="note"><strong>Catatan:</strong> Menggunakan qualifier ukuran tidak berarti bahwa 
    505 sumber daya <em>hanya</em> untuk layar ukuran itu saja. Jika Anda tidak menyediakan sumber
    506 daya alternatif dengan qualifier yang lebih cocok dengan konfigurasi perangkat saat ini, sistem dapat menggunakan sumber daya
    507 mana saja yang <a href="#BestMatch">paling cocok</a>.</p>
    508         <p class="caution"><strong>Perhatian:</strong> Jika semua sumber daya Anda menggunakan 
    509 qualifier yang berukuran <em>lebih besar</em> daripada layar saat ini, sistem <strong>tidak</strong> akan menggunakannya dan aplikasi 
    510 Anda akan crash saat runtime (misalnya, jika semua sumber daya layout ditandai dengan qualifier {@code
    511 xlarge}, namun perangkat memiliki ukuran layar normal).</p>
    512         <p><em>Ditambahkan dalam API level 4.</em></p>
    513         
    514         <p>Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
    515 Layar</a> untuk informasi selengkapnya.</p>
    516         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenLayout},
    517  yang menunjukkan apakah layar berukuran kecil, normal, atau
    518 besar.</p>
    519       </td>
    520     </tr>
    521     <tr id="ScreenAspectQualifier">
    522       <td>Aspek layar</td>
    523       <td>
    524         <code>long</code><br/>
    525         <code>notlong</code>
    526       </td>
    527       <td>
    528         <ul class="nolist">
    529           <li>{@code long}: Layar panjang, seperti WQVGA, WVGA, FWVGA</li>
    530           <li>{@code notlong}: Layar tidak panjang, seperti QVGA, HVGA, dan VGA</li>
    531         </ul>
    532         <p><em>Ditambahkan dalam API level 4.</em></p>
    533         <p>Ini berdasarkan sepenuhnya pada rasio aspek layar (layar "panjang" lebih lebar). Ini
    534 tidak ada kaitannya dengan orientasi layar.</p>
    535         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenLayout},
    536  yang menunjukkan apakah layar panjang.</p>
    537       </td>
    538     </tr>
    539     <tr id="OrientationQualifier">
    540       <td>Orientasi layar</td>
    541       <td>
    542         <code>port</code><br/>
    543         <code>land</code>  <!-- <br/>
    544         <code>square</code>  -->
    545       </td>
    546       <td>
    547         <ul class="nolist">
    548           <li>{@code port}: Perangkat dalam orientasi potret (vertikal)</li>
    549           <li>{@code land}: Perangkat dalam orientasi lanskap (horizontal)</li>
    550           <!-- Square mode is currently not used. -->
    551         </ul>
    552         <p>Ini bisa berubah selama masa pakai aplikasi Anda jika pengguna memutar
    553 layar. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
    554  informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
    555         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#orientation}, 
    556 yang menunjukkan orientasi perangkat saat ini.</p>
    557       </td>
    558     </tr>
    559     <tr id="UiModeQualifier">
    560       <td>Mode UI</td>
    561       <td>
    562         <code>car</code><br/>
    563         <code>desk</code><br/>
    564         <code>television</code><br/>
    565         <code>appliance</code>
    566         <code>watch</code>
    567       </td>
    568       <td>
    569         <ul class="nolist">
    570           <li>{@code car}: Perangkat sedang menampilkan di dudukan perangkat di mobil</li>
    571           <li>{@code desk}: Perangkat sedang menampilkan di dudukan perangkat di meja</li>
    572           <li>{@code television}: Perangkat sedang menampilkan di televisi, yang menyediakan 
    573 pengalaman "sepuluh kaki" dengan UI-nya pada layar besar yang berada jauh dari pengguna,
    574 terutama diorientasikan seputar DPAD atau 
    575 interaksi non-pointer lainnya</li>
    576           <li>{@code appliance}: Perangkat berlaku sebagai 
    577 alat, tanpa tampilan</li>
    578           <li>{@code watch}: Perangkat memiliki tampilan dan dikenakan di pergelangan tangan</li>
    579         </ul>
    580         <p><em>Ditambahkan dalam API level 8, televisi ditambahkan dalam API 13, jam ditambahkan dalam API 20.</em></p>
    581         <p>Untuk informasi tentang cara aplikasi merespons saat perangkat dimasukkan 
    582 ke dalam atau dilepaskan dari dudukannya, bacalah <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Menentukan
    583 dan Memantau Kondisi dan Tipe Dudukan</a>.</p>
    584         <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna menempatkan perangkat di 
    585 dudukannya. Anda dapat mengaktifkan atau menonaktifkan sebagian mode ini menggunakan {@link
    586 android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
    587 informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
    588       </td>
    589     </tr>
    590     <tr id="NightQualifier">
    591       <td>Mode malam</td>
    592       <td>
    593         <code>night</code><br/>
    594         <code>notnight</code>
    595       </td>
    596       <td>
    597         <ul class="nolist">
    598           <li>{@code night}: Waktu malam</li>
    599           <li>{@code notnight}: Waktu siang</li>
    600         </ul>
    601         <p><em>Ditambahkan dalam API level 8.</em></p>
    602         <p>Ini bisa berubah selama masa pakai aplikasi jika mode malam dibiarkan dalam
    603 mode otomatis (default), dalam hal ini perubahan mode berdasarkan pada waktu hari.  Anda dapat mengaktifkan
    604 atau menonaktifkan mode ini menggunakan {@link android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang bagaimana hal ini memengaruhi 
    605 aplikasi Anda selama runtime.</p>
    606       </td>
    607     </tr>
    608     <tr id="DensityQualifier">
    609       <td>Densitas piksel layar (dpi)</td>
    610       <td>
    611         <code>ldpi</code><br/>
    612         <code>mdpi</code><br/>
    613         <code>hdpi</code><br/>
    614         <code>xhdpi</code><br/>
    615         <code>xxhdpi</code><br/>
    616         <code>xxxhdpi</code><br/>
    617         <code>nodpi</code><br/>
    618         <code>tvdpi</code>
    619       </td>
    620       <td>
    621         <ul class="nolist">
    622           <li>{@code ldpi}: Layar densitas rendah; sekitar 120 dpi.</li>
    623           <li>{@code mdpi}: Layar densitas sedang (pada HVGA tradisional); sekitar 160 dpi.
    624 </li>
    625           <li>{@code hdpi}: Layar densitas tinggi; sekitar 240 dpi.</li>
    626           <li>{@code xhdpi}: Layar densitas ekstra tinggi; sekitar 320 dpi. <em>Ditambahkan dalam API
    627 Level 8.</em></li>
    628           <li>{@code xxhdpi}: Layar densitas ekstra-ekstra-tinggi; sekitar 480 dpi. <em>Ditambahkan dalam API
    629 Level 16.</em></li>
    630           <li>{@code xxxhdpi}: Densitas ekstra-ekstra-ekstra-tinggi (hanya ikon launcher, 
    631 lihat <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">catatan</a> 
    632  dalam <em>Mendukung Beberapa Layar</em>); sekitar 640 dpi. <em>Ditambahkan dalam API
    633 Level 18.</em></li>
    634           <li>{@code nodpi}: Ini bisa digunakan untuk sumber daya bitmap yang tidak ingin Anda
    635 skalakan agar sama dengan densitas perangkat.</li>
    636           <li>{@code tvdpi}: Layar antara mdpi dan hdpi; sekitar 213 dpi. Ini
    637 tidak dianggap sebagai kelompok densitas "utama". Sebagian besar ditujukan untuk televisi dan kebanyakan
    638 aplikasi tidak memerlukannya &mdash;asalkan sumber daya mdpi dan hdpi cukup untuk sebagian besar aplikasi dan
    639 sistem akan menskalakan sebagaimana mestinya. Qualifier ini diperkenalkan pada API level 13.</li>
    640         </ul>
    641         <p>Terdapat rasio skala 3:4:6:8:12:16 antara enam densitas utama (dengan mengabaikan densitas
    642 tvdpi). Jadi bitmap 9x9 di ldpi adalah 12x12 di mdpi, 18x18 di hdpi, 24x24 di xhdpi dan seterusnya.
    643 </p>
    644         <p>Jika Anda memutuskan bahwa sumber daya gambar tidak terlihat cukup baik di televisi
    645 atau perangkat tertentu lainnya dan ingin mencoba sumber daya tvdpi, faktor skalanya adalah 1,33*mdpi. Misalnya,
    646 gambar 100px x 100px untuk layar mdpi harus 133px x 133px untuk tvdpi.</p>
    647         <p class="note"><strong>Catatan:</strong> Menggunakan qualifier densitas tidak berarti bahwa
    648 sumber daya <em>hanya</em> untuk layar dengan ukuran itu saja. Jika Anda tidak menyediakan sumber
    649 daya alternatif dengan qualifier yang lebih cocok dengan konfigurasi perangkat saat ini, sistem dapat menggunakan sumber daya
    650 mana saja yang <a href="#BestMatch">paling cocok</a>.</p>
    651         <p>Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
    652 Layar</a> untuk informasi selengkapnya tentang cara menangani densitas layar yang berbeda dan cara Android
    653 menurunkan skala bitmap Anda agar sesuai dengan densitas saat ini.</p>
    654        </td>
    655     </tr>
    656     <tr id="TouchscreenQualifier">
    657       <td>Tipe layar sentuh</td>
    658       <td>
    659         <code>notouch</code><br/>
    660         <code>finger</code>
    661       </td>
    662       <td>
    663         <ul class="nolist">
    664           <li>{@code notouch}: Perangkat tidak memiliki layar sentuh.</li>
    665           <li>{@code finger}: Perangkat memiliki layar sentuh yang dimaksudkan untuk
    666 digunakan melalui interaksi dengan jari pengguna.</li>
    667         </ul>
    668         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#touchscreen}, yang
    669 menunjukkan tipe layar sentuh pada perangkat.</p>
    670       </td>
    671     </tr>
    672     <tr id="KeyboardAvailQualifier">
    673       <td>Ketersediaan keyboard</td>
    674       <td>
    675         <code>keysexposed</code><br/>
    676         <code>keyshidden</code><br/>
    677         <code>keyssoft</code>
    678       </td>
    679       <td>
    680         <ul class="nolist">
    681           <li>{@code keysexposed}: Perangkat menyediakan keyboard. Jika perangkat mengaktifkan
    682 keyboard perangkat lunak (kemungkinan), ini dapat digunakan bahkan saat keyboard fisik
    683 <em>tidak</em> diekspos kepada pengguna, meskipun perangkat tidak memiliki keyboard fisik. Jika keyboard
    684 perangkat lunak tidak disediakan atau dinonaktifkan, maka ini hanya digunakan bila
    685 keyboard fisik diekspos.</li>
    686           <li>{@code keyshidden}: Perangkat memiliki keyboard fisik yang tersedia
    687 tetapi tersembunyi <em>dan</em> perangkat <em>tidak</em> mengaktifkan keyboard perangkat lunak.</li>
    688           <li>{@code keyssoft}: Perangkat mengaktifkan keyboard perangkat lunak,
    689 baik itu terlihat maupun tidak.</li>
    690         </ul>
    691         <p>Jika Anda menyediakan sumber daya <code>keysexposed</code>, namun bukan sumber daya <code>keyssoft</code>
    692 , sistem akan menggunakan sumber daya <code>keysexposed</code> baik keyboard
    693 terlihat atau tidak, asalkan sistem telah mengaktifkan keyboard perangkat lunak.</p>
    694         <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna membuka keyboard
    695 fisik. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang bagaimana
    696 hal ini memengaruhi aplikasi Anda selama runtime.</p>
    697         <p>Lihat juga bidang konfigurasi {@link
    698 android.content.res.Configuration#hardKeyboardHidden} dan {@link
    699 android.content.res.Configuration#keyboardHidden}, yang menunjukkan visibilitas 
    700 keyboard fisik dan visibilitas segala jenis keyboard (termasuk keyboard perangkat lunak), masing-masing.</p>
    701       </td>
    702     </tr>
    703     <tr id="ImeQualifier">
    704       <td>Metode input teks utama</td>
    705       <td>
    706         <code>nokeys</code><br/>
    707         <code>qwerty</code><br/>
    708         <code>12key</code>
    709       </td>
    710       <td>
    711         <ul class="nolist">
    712           <li>{@code nokeys}: Perangkat tidak memiliki tombol fisik untuk input teks.</li>
    713           <li>{@code qwerty}: Perangkat memiliki keyboard fisik qwerty, baik terlihat maupun tidak pada
    714 pengguna
    715 .</li>
    716           <li>{@code 12key}: Perangkat memiliki keyboard fisik 12 tombol, baik terlihat maupun tidak
    717 pada pengguna.</li>
    718         </ul>
    719         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#keyboard}, 
    720 yang menunjukkan metode utama input teks yang tersedia.</p>
    721       </td>
    722     </tr>
    723     <tr id="NavAvailQualifier">
    724       <td>Ketersediaan tombol navigasi</td>
    725       <td>
    726         <code>navexposed</code><br/>
    727         <code>navhidden</code>
    728       </td>
    729       <td>
    730         <ul class="nolist">
    731           <li>{@code navexposed}: Tombol navigasi tersedia bagi pengguna.</li>
    732           <li>{@code navhidden}: Tombol navigasi tidak tersedia (misalnya di balik penutup yang
    733 ditutup).</li>
    734         </ul>
    735         <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna menyingkap tombol
    736 navigasi. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
    737 informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
    738         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#navigationHidden}, yang menunjukkan
    739 apakah tombol navigasi disembunyikan.</p>
    740       </td>
    741     </tr>
    742     <tr id="NavigationQualifier">
    743       <td>Metode navigasi non-sentuh utama</td>
    744       <td>
    745         <code>nonav</code><br/>
    746         <code>dpad</code><br/>
    747         <code>trackball</code><br/>
    748         <code>wheel</code>
    749       </td>
    750       <td>
    751         <ul class="nolist">
    752           <li>{@code nonav}: Perangkat tidak memiliki fasilitas navigasi selain menggunakan
    753 layar sentuh.</li>
    754           <li>{@code dpad}: Perangkat memiliki pad pengarah (directional pad / d-pad) untuk navigasi.</li>
    755           <li>{@code trackball}: Perangkat memiliki trackball untuk navigasi.</li>
    756           <li>{@code wheel}: Perangkat memiliki roda pengarah (directional wheel) untuk navigasi (tidak umum).</li>
    757         </ul>
    758         <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#navigation},
    759 yang menunjukkan tipe metode navigasi yang tersedia.</p>
    760       </td>
    761     </tr>
    762 <!-- DEPRECATED
    763     <tr>
    764       <td>Screen dimensions</td>
    765       <td>Examples:<br/>
    766         <code>320x240</code><br/>
    767         <code>640x480</code><br/>
    768         etc.
    769       </td>
    770       <td>
    771         <p>The larger dimension must be specified first. <strong>This configuration is deprecated
    772 and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
    773 orientation" described above.</p>
    774       </td>
    775     </tr>
    776 -->
    777     <tr id="VersionQualifier">
    778       <td>Versi Platform (level API)</td>
    779       <td>Contoh:<br/>
    780         <code>v3</code><br/>
    781         <code>v4</code><br/>
    782         <code>v7</code><br/>
    783         dll.</td>
    784       <td>
    785         <p>Level API yang didukung perangkat. Misalnya, <code>v1</code> untuk API level
    786 1 (perangkat dengan Android 1.0 atau yang lebih tinggi) dan <code>v4</code> untuk API level 4 (perangkat dengan Android
    787 1.6 atau yang lebih tinggi). Lihat dokumen <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Level API Android</a> untuk informasi selengkapnya
    788 tentang nilai-nilai ini.</p>
    789       </td>
    790     </tr>
    791 </table>
    792 
    793 
    794 <p class="note"><strong>Catatan:</strong> Sebagian qualifier konfigurasi telah ditambahkan sejak Android
    795 1.0, jadi tidak semua versi Android mendukung semua qualifier. Menggunakan qualifier baru secara implisit
    796 akan menambahkan qualifier versi platform sehingga perangkat yang lebih lama pasti mengabaikannya. Misalnya, menggunakan qualifier
    797 <code>w600dp</code> secara otomatis akan menyertakan qualifier <code>v13</code>, karena
    798 qualifier lebar yang tersedia baru di API level 13. Untuk menghindari masalah, selalu sertakan satu set
    799 sumber daya default (satu set sumber daya <em>tanpa qualifier</em>). Untuk informasi selengkapnya, lihat
    800 bagian tentang <a href="#Compatibility">Menyediakan Kompatibilitas Perangkat Terbaik dengan
    801 Sumber Daya</a>.</p>
    802 
    803 
    804 
    805 <h3 id="QualifierRules">Aturan penamaan qualifier</h3>
    806 
    807 <p>Inilah beberapa aturan tentang penggunaan nama qualifier konfigurasi:</p>
    808 
    809 <ul>
    810     <li>Anda bisa menetapkan beberapa qualifier untuk satu set sumber daya, yang dipisahkan dengan tanda hubung. Misalnya,
    811 <code>drawable-en-rUS-land</code> berlaku untuk perangkat bahasa Inggris-AS dalam orientasi
    812 lanskap.</li>
    813     <li>Qualifier harus dalam urutan seperti yang tercantum dalam <a href="#table2">tabel 2</a>. 
    814 Misalnya:
    815       <ul>
    816         <li>Salah: <code>drawable-hdpi-port/</code></li>
    817         <li>Benar: <code>drawable-port-hdpi/</code></li>
    818       </ul>
    819     </li>
    820     <li>Direktori sumber daya alternatif tidak bisa digunakan. Misalnya, Anda tidak bisa memiliki
    821 <code>res/drawable/drawable-en/</code>.</li>
    822     <li>Nilai tidak membedakan huruf besar maupun kecil.  Compiler sumber daya mengubah nama direktori
    823 menjadi huruf kecil sebelum pemrosesan untuk menghindari masalah pada sistem file yang membedakan
    824 huruf kecil dan besar. Setiap penggunaan huruf besar dalam nama hanyalah demi keterbacaan.</li>
    825     <li>Hanya didukung satu nilai untuk setiap tipe qualifier. Misalnya, jika Anda ingin menggunakan
    826 file drawable yang sama untuk Spanyol dan Prancis, Anda <em>tidak bisa</em> memiliki direktori bernama
    827 <code>drawable-rES-rFR/</code>. Sebagai gantinya, Anda perlu dua direktori sumber daya, seperti
    828 <code>drawable-rES/</code> dan <code>drawable-rFR/</code>, berisi file yang sesuai.
    829 Akan tetapi, Anda tidak harus benar-benar menggandakan file yang sama di kedua lokasi. Sebagai gantinya, Anda
    830 bisa membuat alias ke satu sumber daya. Lihat <a href="#AliasResources">Membuat
    831 sumber daya alias</a> di bawah ini.</li>
    832 </ul>
    833 
    834 <p>Setelah Anda menyimpan sumber daya alternatif ke dalam direktori yang diberi nama dengan
    835 qualifier ini, Android secara otomatis menerapkan sumber daya dalam
    836 aplikasi Anda berdasarkan pada konfigurasi perangkat saat ini. Setiap kali sumber daya diminta, Android akan memeriksa direktori sumber daya
    837 alternatif berisi file sumber daya yang diminta, lalu <a href="#BestMatch">mencari sumber daya yang
    838 paling cocok</a>(dibahas di bawah). Jika tidak ada sumber daya alternatif yang cocok
    839 dengan konfigurasi perangkat tertentu, Android akan menggunakan sumber daya default terkait (set
    840 sumber daya untuk tipe sumber daya tertentu yang tidak termasuk qualifier
    841 konfigurasi).</p>
    842 
    843 
    844 
    845 <h3 id="AliasResources">Membuat sumber daya alias</h3>
    846 
    847 <p>Bila memiliki sumber daya yang ingin Anda gunakan untuk lebih dari satu konfigurasi
    848 perangkat (namun tidak ingin menyediakannya sebagai sumber daya default), Anda tidak perlu menempatkan sumber daya
    849 yang sama di lebih dari satu direktori sumber daya alternatif. Sebagai gantinya, (dalam beberapa kasus) Anda bisa membuat
    850 sumber daya alternatif
    851 yang berfungsi sebagai alias untuk sumber daya yang disimpan dalam direktori sumber daya default.</p>
    852 
    853 <p class="note"><strong>Catatan:</strong> Tidak semua sumber daya menawarkan mekanisme yang memungkinkan Anda
    854 membuat alias ke sumber daya lain. Khususnya, animasi, menu, raw, dan
    855 sumber daya lain yang tidak ditetapkan dalam direktori {@code xml/} tidak menawarkan fitur ini.</p>
    856 
    857 <p>Misalnya, bayangkan Anda memiliki ikon aplikasi {@code icon.png}, dan membutuhkan versi uniknya
    858 untuk lokal berbeda. Akan tetapi, dua lokal, bahasa Inggris-Kanada dan bahasa Prancis-Kanada, harus menggunakan
    859 versi yang sama. Anda mungkin berasumsi bahwa Anda perlu menyalin gambar
    860 yang sama ke dalam direktori sumber daya baik untuk bahasa Inggris-Kanada maupun bahasa Prancis-Kanada, namun
    861 bukan demikian. Sebagai gantinya, Anda bisa menyimpan gambar yang sama-sama digunakan sebagai {@code icon_ca.png} (nama
    862 apa saja selain {@code icon.png}) dan memasukkannya
    863 dalam direktori default {@code res/drawable/}. Lalu buat file {@code icon.xml} dalam {@code
    864 res/drawable-en-rCA/} dan {@code res/drawable-fr-rCA/} yang mengacu ke sumber daya {@code icon_ca.png}
    865 yang menggunakan elemen {@code &lt;bitmap&gt;}. Hal ini memungkinkan Anda menyimpan satu versi saja dari
    866 file PNG dan dua file XML kecil yang menunjuk ke sana. (Contoh file XML ditampilkan di bawah.)</p>
    867 
    868 
    869 <h4>Drawable</h4>
    870 
    871 <p>Untuk membuat alias ke drawable yang ada, gunakan elemen {@code &lt;bitmap&gt;}.
    872 Misalnya:</p>
    873 
    874 <pre>
    875 &lt;?xml version="1.0" encoding="utf-8"?>
    876 &lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    877     android:src="@drawable/icon_ca" />
    878 </pre>
    879 
    880 <p>Jika Anda menyimpan file ini sebagai {@code icon.xml} (dalam direktori sumber daya alternatif, seperti
    881 {@code res/drawable-en-rCA/}), maka file akan dikompilasi menjadi sumber daya yang dapat Anda acu
    882 sebagai {@code R.drawable.icon}, namun sebenarnya merupakan alias untuk sumber daya {@code
    883 R.drawable.icon_ca} (yang disimpan dalam {@code res/drawable/}).</p>
    884 
    885 
    886 <h4>Layout</h4>
    887 
    888 <p>Untuk membuat alias ke layout yang ada, gunakan elemen {@code &lt;include&gt;},
    889 yang dibungkus dalam {@code &lt;merge&gt;}. Misalnya:</p>
    890 
    891 <pre>
    892 &lt;?xml version="1.0" encoding="utf-8"?>
    893 &lt;merge>
    894     &lt;include layout="@layout/main_ltr"/>
    895 &lt;/merge>
    896 </pre>
    897 
    898 <p>Jika Anda menyimpan file ini sebagai {@code main.xml}, file akan dikompilasi menjadi sumber daya yang dapat Anda acu
    899 sebagai {@code R.layout.main}, namun sebenarnya merupakan alias untuk sumber daya {@code R.layout.main_ltr}
    900 .</p>
    901 
    902 
    903 <h4>String dan nilai-nilai sederhana lainnya</h4>
    904 
    905 <p>Untuk membuat alias ke string yang ada, cukup gunakan ID sumber daya
    906 dari string yang diinginkan sebagai nilai untuk string baru. Misalnya:</p>
    907 
    908 <pre>
    909 &lt;?xml version="1.0" encoding="utf-8"?>
    910 &lt;resources>
    911     &lt;string name="hello">Hello&lt;/string>
    912     &lt;string name="hi">@string/hello&lt;/string>
    913 &lt;/resources>
    914 </pre>
    915 
    916 <p>Sumber daya {@code R.string.hi} sekarang merupakan alias untuk {@code R.string.hello}.</p>
    917 
    918 <p> <a href="{@docRoot}guide/topics/resources/more-resources.html">Nilai sederhana lainnya</a> sama
    919 cara kerjanya. Misalnya, sebuah warna:</p>
    920 
    921 <pre>
    922 &lt;?xml version="1.0" encoding="utf-8"?>
    923 &lt;resources>
    924     &lt;color name="yellow">#f00&lt;/color>
    925     &lt;color name="highlight">@color/red&lt;/color>
    926 &lt;/resources>
    927 </pre>
    928 
    929 
    930 
    931 
    932 <h2 id="Compatibility">Menyediakan Kompatibilitas Perangkat Terbaik dengan Sumber Daya</h2>
    933 
    934 <p>Agar aplikasi Anda mendukung beberapa konfigurasi perangkat,
    935 Anda harus selalu menyediakan sumber daya default untuk setiap tipe sumber daya yang menggunakan aplikasi Anda.</p>
    936 
    937 <p>Misalnya, jika aplikasi Anda mendukung beberapa bahasa, sertakan selalu direktori {@code
    938 values/} (tempat string Anda disimpan) <em>tanpa</em> <a href="#LocaleQualifier">qualifier bahasa dan wilayah</a>. Jika sebaliknya Anda menempatkan semua file
    939 string dalam direktori yang memiliki qualifier bahasa dan wilayah, maka aplikasi Anda akan crash saat berjalan
    940 pada perangkat yang telah diatur ke bahasa yang tidak didukung string Anda. Namun asalkan Anda menyediakan sumber daya default
    941 {@code values/}, aplikasi akan berjalan lancar (meskipun pengguna
    942 tidak memahami bahasa itu&mdash;, ini lebih baik daripada crash).</p>
    943 
    944 <p>Demikian pula, jika Anda menyediakan sumber daya layout berbeda berdasarkan orientasi layar, Anda harus
    945 memilih satu orientasi sebagai default. Misalnya, sebagai ganti menyediakan sumber daya dalam {@code
    946 layout-land/} untuk lanskap dan {@code layout-port/} untuk potret, biarkan salah satu sebagai default, seperti
    947 {@code layout/} untuk lanskap dan {@code layout-port/} untuk potret.</p>
    948 
    949 <p>Sumber daya default perlu disediakan bukan hanya karena aplikasi mungkin berjalan pada
    950 konfigurasi yang belum Anda antisipasi, namun juga karena versi baru Android terkadang menambahkan 
    951 qualifier konfigurasi yang tidak didukung oleh versi lama. Jika Anda menggunakan qualifier sumber daya baru,
    952 namun mempertahankan kompatibilitas kode dengan versi Android yang lebih lama, maka saat versi lama
    953 Android menjalankan aplikasi, aplikasi itu akan crash jika Anda tidak menyediakan sumber daya default, aplikasi
    954 tidak bisa menggunakan sumber daya yang dinamai dengan qualifier baru. Misalnya, jika <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
    955 minSdkVersion}</a> Anda diatur ke 4, dan Anda memenuhi syarat semua sumber daya drawable dengan menggunakan <a href="#NightQualifier">mode malam</a> ({@code night} atau {@code notnight}, yang ditambahkan di API
    956 Level 8), maka perangkat API level 4 tidak bisa mengakses sumber daya drawable dan akan crash. Dalam hal
    957 ini, Anda mungkin ingin {@code notnight} menjadi sumber daya default, jadi Anda harus mengecualikan
    958 qualifier itu agar sumber daya drawable Anda ada dalam {@code drawable/} atau {@code drawable-night/}.</p>
    959 
    960 <p>Jadi, agar bisa menyediakan kompatibilitas perangkat terbaik, sediakan selalu sumber daya
    961 default untuk sumber daya yang diperlukan aplikasi Anda untuk berjalan dengan benar. Selanjutnya buatlah sumber daya
    962 alternatif untuk konfigurasi perangkat tertentu dengan menggunakan qualifier konfigurasi.</p>
    963 
    964 <p>Ada satu eksepsi untuk aturan ini: Jika <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> aplikasi Anda adalah 4 atau
    965 lebih, Anda <em>tidak</em> memerlukan sumber daya drawable default saat menyediakan sumber daya
    966 drawable alternatif dengan qualifier <a href="#DensityQualifier">densitas layar</a>. Tanpa sumber daya
    967 drawable default sekali pun, Android bisa menemukan yang paling cocok di antara densitas layar alternatif dan menskalakan
    968 bitmap sesuai kebutuhan. Akan tetapi, demi pengalaman terbaik pada semua jenis perangkat, Anda harus
    969 menyediakan drawable alternatif untuk ketiga tipe densitas.</p>
    970 
    971 
    972 
    973 <h2 id="BestMatch">Cara Android Menemukan Sumber Daya yang Paling Cocok</h2>
    974 
    975 <p>Saat Anda meminta sumber daya yang Anda berikan alternatifnya, Android akan memilih
    976 sumber daya alternatif yang akan digunakan saat runtime, bergantung pada konfigurasi perangkat saat ini. Untuk
    977 mendemonstrasikan cara Android memilih sumber daya alternatif, anggaplah direktori drawable berikut
    978 masing-masing berisi versi berbeda dari gambar yang sama:</p>
    979 
    980 <pre class="classic no-pretty-print">
    981 drawable/
    982 drawable-en/
    983 drawable-fr-rCA/
    984 drawable-en-port/
    985 drawable-en-notouch-12key/
    986 drawable-port-ldpi/
    987 drawable-port-notouch-12key/
    988 </pre>
    989 
    990 <p>Dan anggaplah yang berikut ini merupakan konfigurasi perangkatnya:</p>
    991 
    992 <p style="margin-left:1em;">
    993 Lokal = <code>en-GB</code> <br/>
    994 Orientasi layar = <code>port</code> <br/>
    995 Densitas piksel layar = <code>hdpi</code> <br/>
    996 Tipe layar sentuh = <code>notouch</code> <br/>
    997 Metode input teks utama = <code>12key</code>
    998 </p>
    999 
   1000 <p>Dengan membandingkan konfigurasi perangkat dengan sumber daya alternatif yang tersedia, Android akan memilih
   1001 drawable dari {@code drawable-en-port}.</p>
   1002 
   1003 <p>Sistem akan menentukan keputusannya mengenai sumber daya yang akan digunakan dengan logika
   1004 berikut:</p>
   1005 
   1006 
   1007 <div class="figure" style="width:371px">
   1008 <img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
   1009 <p class="img-caption"><strong>Gambar 2.</strong> Bagan alur cara Android menemukan
   1010 sumber daya yang paling cocok.</p>
   1011 </div>
   1012 
   1013 
   1014 <ol>
   1015   <li>Menghapus file sumber daya yang bertentangan dengan konfigurasi perangkat.
   1016     <p>Direktori <code>drawable-fr-rCA/</code> dihapus karena bertentangan
   1017 dengan lokal <code>en-GB</code>.</p>
   1018 <pre class="classic no-pretty-print">
   1019 drawable/
   1020 drawable-en/
   1021 <strike>drawable-fr-rCA/</strike>
   1022 drawable-en-port/
   1023 drawable-en-notouch-12key/
   1024 drawable-port-ldpi/
   1025 drawable-port-notouch-12key/
   1026 </pre>
   1027 <p class="note"><strong>Eksepsi:</strong> Densitas piksel layar adalah satu qualifier yang
   1028 tidak dihapus karena bertentangan. Meskipun densitas layar perangkat adalah hdpi,
   1029 <code>drawable-port-ldpi/</code> tidak dihapus karena setiap densitas layar
   1030 dianggap cocok untuk saat ini. Informasi selengkapnya tersedia dalam dokumen <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
   1031 Layar</a>.</p></li>
   1032 
   1033   <li>Pilih qualifier berkedudukan tertinggi (berikutnya) dalam daftar (<a href="#table2">tabel 2</a>).
   1034 (Mulai dengan MCC, lalu pindah ke bawah.) </li>
   1035   <li>Apakah salah satu direktori sumber daya menyertakan qualifier ini?  </li>
   1036     <ul>
   1037       <li>Jika Tidak, kembali ke langkah 2 dan lihat qualifier berikutnya. (Dalam contoh,
   1038 jawabannya adalah "tidak" hingga qualifier bahasa tercapai.)</li>
   1039       <li>Jika Ya, lanjutkan ke langkah 4.</li>
   1040     </ul>
   1041   </li>
   1042 
   1043   <li>Hapus direktori sumber daya yang tidak menyertakan qualifier ini. Dalam contoh, sistem
   1044 menghapus semua direktori yang tidak menyertakan qualifier bahasa:</li>
   1045 <pre class="classic no-pretty-print">
   1046 <strike>drawable/</strike>
   1047 drawable-en/
   1048 drawable-en-port/
   1049 drawable-en-notouch-12key/
   1050 <strike>drawable-port-ldpi/</strike>
   1051 <strike>drawable-port-notouch-12key/</strike>
   1052 </pre>
   1053 <p class="note"><strong>Eksepsi:</strong> Jika qualifier yang dimaksud adalah densitas piksel layar,
   1054 Android akan memilih opsi yang paling cocok dengan densitas layar perangkat.
   1055 Secara umum, Android lebih suka menurunkan skala gambar asli yang lebih besar daripada menaikkan skala
   1056 atas gambar asli yang lebih kecil. Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
   1057 Layar</a>.</p>
   1058   </li>
   1059 
   1060   <li>Kembali dan ulangi langkah 2, 3, dan 4 hingga tersisa satu direktori. Dalam contoh ini, orientasi
   1061 layar adalah qualifier berikutnya yang memiliki kecocokan. 
   1062 Jadi, sumber daya yang tidak menetapkan orientasi layar akan dihapus:
   1063 <pre class="classic no-pretty-print">
   1064 <strike>drawable-en/</strike>
   1065 drawable-en-port/
   1066 <strike>drawable-en-notouch-12key/</strike>
   1067 </pre>
   1068 <p>Direktori yang tersisa adalah {@code drawable-en-port}.</p>
   1069   </li>
   1070 </ol>
   1071 
   1072 <p>Meskipun prosedur dijalankan untuk setiap sumber daya yang diminta, sistem akan mengoptimalkan beberapa aspek
   1073 lebih lanjut. Satu optimalisasi tersebut adalah bahwa setelah konfigurasi perangkat diketahui, sistem mungkin
   1074 akan menghapus sumber daya alternatif yang sama sekali tidak cocok. Misalnya, jika bahasa konfigurasi
   1075 adalah bahasa Inggris ("en"), maka setiap direktori sumber daya yang memiliki qualifier bahasa akan diatur ke
   1076 selain bahasa Inggris tidak akan pernah disertakan dalam pool sumber daya yang diperiksa (meskipun
   1077 direktori sumber daya <em>tanpa</em> qualifier bahasa masih disertakan).</p>
   1078 
   1079 <p>Saat memilih sumber daya berdasarkan qualifier ukuran layar, sistem akan menggunakan
   1080 sumber daya yang didesain untuk layar yang lebih kecil daripada layar saat ini jika tidak ada sumber daya yang lebih cocok
   1081 (misalnya, layar ukuran besar akan menggunakan sumber daya layar ukuran normal jika diperlukan). Akan tetapi,
   1082 jika satu-satunya sumber daya yang tersedia <em>lebih besar</em> daripada layar saat ini, sistem
   1083 <strong>tidak</strong> akan menggunakannya dan aplikasi Anda akan crash jika tidak ada sumber daya lain yang cocok dengan konfigurasi
   1084 perangkat (misalnya, jika semua sumber daya layout ditandai dengan qualifier {@code xlarge},
   1085 namun perangkat memiliki ukuran layar normal).</p>
   1086 
   1087 <p class="note"><strong>Catatan:</strong> <em>Kedudukan</em> qualifier (dalam <a href="#table2">tabel 2</a>) lebih penting
   1088 daripada jumlah qualifier yang benar-benar pas dengan perangkat. Misalnya, dalam langkah 4 di atas, pilihan
   1089 terakhir pada daftar berisi tiga qualifier yang bebar-benar cocok dengan perangkat (orientasi, tipe
   1090 layar sentuh, dan metode input), sementara <code>drawable-en</code> hanya memiliki satu parameter yang cocok
   1091 (bahasa). Akan tetapi, bahasa memiliki kedudukan lebih tinggi dari pada qualifier lainnya, sehingga
   1092 <code>drawable-port-notouch-12key</code> tidak masuk.</p>
   1093 
   1094 <p>Untuk mengetahui selengkapnya tentang cara menggunakan sumber daya dalam aplikasi, lanjutkan ke <a href="accessing-resources.html">Mengakses Sumber Daya</a>.</p>
   1095