Home | History | Annotate | Download | only in resources
      1 page.title=Mengakses 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>Sumber daya bisa diacu dari kode dengan menggunakan integer dari {@code R.java}, seperti
     11 {@code R.drawable.myimage}</li>
     12     <li>Sumber daya bisa diacu dari sumber daya dengan menggunakan sintaks XML khusus, seperti {@code
     13 &#64;drawable/myimage}</li>
     14     <li>Anda juga bisa mengakses sumber daya aplikasi Anda dengan berbagai metode di
     15 {@link android.content.res.Resources}</li>
     16   </ul>
     17 
     18   <h2>Kelas-Kelas Utama</h2>
     19   <ol>
     20     <li>{@link android.content.res.Resources}</li>
     21   </ol>
     22 
     23   <h2>Dalam dokumen ini</h2>
     24   <ol>
     25     <li><a href="#ResourcesFromCode">Mengakses Sumber Daya dari Kode</a></li>
     26     <li><a href="#ResourcesFromXml">Mengakses Sumber Daya dari XML</a>
     27       <ol>
     28         <li><a href="#ReferencesToThemeAttributes">Mengacu atribut gaya</a></li>
     29       </ol>
     30     </li>
     31     <li><a href="#PlatformResources">Mengakses Sumber Daya Platform</a></li>
     32   </ol>
     33 
     34   <h2>Lihat juga</h2>
     35   <ol>
     36     <li><a href="providing-resources.html">Menyediakan Sumber Daya</a></li>
     37     <li><a href="available-resources.html">Tipe Sumber Daya</a></li>
     38   </ol>
     39 </div>
     40 </div>
     41 
     42 
     43 
     44 
     45 <p>Setelah Anda menyediakan sumber daya dalam aplikasi Anda (yang dibicarakan di <a href="providing-resources.html">Menyediakan Sumber Daya</a>), Anda bisa menerapkannya dengan
     46 mengacu ID sumber dayanya. Semua ID sumber daya didefinisikan di kelas {@code R} proyek Anda, yang
     47 dihasilkan oleh alat {@code aapt} secara otomatis.</p>
     48 
     49 <p>Bila aplikasi Anda dikompilasi, {@code aapt} akan membuat kelas {@code R}, yang berisi
     50 ID sumber daya untuk semua sumber daya dalam direktori {@code
     51 res/} Anda. Untuk masing-masing tipe sumber daya, ada subkelas {@code R} (misalnya,
     52 {@code R.drawable} untuk semua sumber daya yang bisa ditarik), dan untuk masing-masing sumber daya dari tipe itu, ada satu integer statis
     53  (misalnya, {@code R.drawable.icon}). Integer ini adalah ID sumber daya yang bisa Anda gunakan
     54 untuk mengambil sumber daya Anda.</p>
     55 
     56 <p>Walaupun kelas {@code R} adalah tempat menyebutkan ID sumber daya, Anda tidak perlu
     57 melihat ke sana untuk menemukan ID sumber daya. ID sumber daya selalu terdiri dari:</p>
     58 <ul>
     59   <li><em>Tipe sumber daya</em>: Masing-masing sumber daya dikelompokkan menjadi "tipe", misalnya {@code
     60 string}, {@code drawable}, dan {@code layout}. Untuk mengetahui selengkapnya tentang berbagai tipe, lihat <a href="available-resources.html">Tipe Sumber Daya</a>.
     61   </li>
     62   <li><em>Nama sumber daya</em>, bisa berupa: nama file,
     63 tidak termasuk ekstensi; atau nilai dalam atribut {@code android:name} XML, jika 
     64 sumber daya itu sebuah nilai sederhana (misalnya sebuah string).</li>
     65 </ul>
     66 
     67 <p>Ada dua cara untuk mengakses sumber daya:</p>
     68 <ul>
     69   <li><strong>Dalam kode:</strong> Menggunakan integer statis dari subkelas dari kelas {@code R}
     70 , misalnya:
     71     <pre class="classic no-pretty-print">R.string.hello</pre>
     72     <p>{@code string} adalah tipe sumber daya dan {@code hello} adalah nama sumber daya. Ada banyak
     73 API Android yang bisa mengakses sumber daya Anda bila Anda menyediakan ID sumber daya dengan format ini. Lihat
     74 <a href="#ResourcesFromCode">Mengakses Sumber Daya dalam Kode</a>.</p>
     75   </li>
     76   <li><strong>Dalam XML:</strong> Menggunakan sebuah sintaks XML khusus yang juga berkaitan dengan
     77 ID sumber daya yang didefinisikan dalam kelas {@code R}, misalnya:
     78     <pre class="classic no-pretty-print">&#64;string/hello</pre>
     79     <p>{@code string} adalah tipe sumber daya dan {@code hello} adalah nama sumber daya. Anda bisa menggunakan
     80 sintaks ini dalam sumber daya XML di mana saja Anda ingin menyediakan sebuah nilai dalam sebuah sumber daya. Lihat <a href="#ResourcesFromXml">Mengakses Sumber Daya dari XML</a>.</p>
     81   </li>
     82 </ul>
     83 
     84 
     85 
     86 <h2 id="ResourcesFromCode">Mengakses Sumber Daya dalam Kode </h2>
     87 
     88 <p>Anda bisa menggunakan sumber daya dalam kode dengan menyalurkan ID sumber daya sebagai sebuah parameter metode. Misalnya,
     89  Anda bisa mengatur sebuah {@link android.widget.ImageView} agar menggunakan sumber daya{@code res/drawable/myimage.png}
     90 dengan menggunakan {@link android.widget.ImageView#setImageResource(int) setImageResource()}:</p>
     91 <pre>
     92 ImageView imageView = (ImageView) findViewById(R.id.myimageview);
     93 imageView.setImageResource(<strong>R.drawable.myimage</strong>);
     94 </pre>
     95 
     96 <p>Anda juga bisa mengambil tiap sumber daya dengan menggunakan berbagai metode di {@link
     97 android.content.res.Resources}, di mana Anda bisa mendapatkan instance
     98  {@link android.content.Context#getResources()}.</p>
     99 
    100 <div class="sidebox-wrapper">
    101 <div class="sidebox">
    102 <h2>Akses ke File Asli</h2>
    103 
    104 <p>Walaupun tidak lazim, Anda mungkin perlu mengakses file dan direktori asli Anda. Jika demikian, maka
    105 menyimpan file Anda di {@code res/} tidak akan berhasil, karena satu-satunya cara untuk membaca sebuah sumber daya dari
    106 {@code res/} adalah dengan ID sumber daya. Sebagai gantinya, Anda bisa menyimpan sumber daya dalam direktori
    107 {@code assets/}.</p>
    108 <p>File yang tersimpan di direktori {@code assets/} <em>tidak</em> diberi ID
    109 sumber daya, sehingga Anda tidak bisa mengacunya melalui kelas {@code R} atau dari sumber daya XML. Sebagai gantinya, Anda bisa melakukan
    110 query file di direktori {@code assets/} seperti sebuah sistem file biasa dan membaca data mentah dengan menggunakan
    111 {@link android.content.res.AssetManager}.</p>
    112 <p>Akan tetapi, jika yang Anda butuhkan hanya kemampuan membaca data mentah (misalnya sebuah file video atau audio),
    113 maka simpanlah file itu di direktori {@code res/raw/} dan baca aliran byte dengan menggunakan {@link
    114 android.content.res.Resources#openRawResource(int) openRawResource()}.</p>
    115 
    116 </div>
    117 </div>
    118 
    119 
    120 <h3>Sintaks</h3>
    121 
    122 <p>Inilah sintaks untuk mengacu sumber daya dalam kode:</p>
    123 
    124 <pre class="classic no-pretty-print">
    125 [<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
    126 </pre>
    127 
    128 <ul>
    129   <li><em> {@code &lt;package_name&gt;}</em>adalah nama paket yang di dalamnya terdapat sumber daya (tidak
    130 dibutuhkan bila mengacu sumber daya dari paket Anda sendiri).</li>
    131   <li><em>{@code &lt;resource_type&gt;}</em> adalah subkelas {@code R} untuk tipe sumber daya.</li>
    132   <li><em>{@code &lt;resource_name&gt;}</em> bisa berupa nama file sumber daya
    133 tanpa ekstensi atau nilai atribut {@code android:name} dalam elemen XML (untuk nilai
    134 sederhana).</li>
    135 </ul>
    136 <p>Lihat <a href="available-resources.html">Tipe Sumber Daya</a> untuk
    137 informasi selengkapnya tentang masing-masing tipe sumber daya dan cara mengacunya.</p>
    138 
    139 
    140 <h3>Kasus penggunaan</h3>
    141 
    142 <p>Ada banyak metode yang menerima parameter ID sumber daya dan Anda bisa mengambil sumber daya dengan menggunakan
    143 metode di {@link android.content.res.Resources}. Anda bisa mengambil instance {@link
    144 android.content.res.Resources} dengan {@link android.content.Context#getResources
    145 Context.getResources()}.</p>
    146 
    147 
    148 <p>Berikut adalah beberapa contoh cara mengakses sumber daya dalam kode:</p>
    149 
    150 <pre>
    151 // Load a background for the current screen from a drawable resource
    152 {@link android.app.Activity#getWindow()}.{@link
    153 android.view.Window#setBackgroundDrawableResource(int)
    154 setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
    155 
    156 // Set the Activity title by getting a string from the Resources object, because
    157 //  this method requires a CharSequence rather than a resource ID
    158 {@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
    159 setTitle}(getResources().{@link android.content.res.Resources#getText(int)
    160 getText}(<strong>R.string.main_title</strong>));
    161 
    162 // Load a custom layout for the current screen
    163 {@link android.app.Activity#setContentView(int)
    164 setContentView}(<strong>R.layout.main_screen</strong>);
    165 
    166 // Set a slide in animation by getting an Animation from the Resources object
    167 mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
    168 setInAnimation}(AnimationUtils.loadAnimation(this,
    169         <strong>R.anim.hyperspace_in</strong>));
    170 
    171 // Set the text on a TextView object using a resource ID
    172 TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
    173 msgTextView.{@link android.widget.TextView#setText(int)
    174 setText}(<strong>R.string.hello_message</strong>);
    175 </pre>
    176 
    177 
    178 <p class="caution"><strong>Perhatian:</strong> Anda tidak boleh memodifikasi file {@code
    179 R.java} secara manual&mdash;, ini dihasilkan oleh alat {@code aapt} bila proyek Anda telah
    180 dikompilasi. Perubahan apa pun akan ditimpa bila nanti Anda mengompilasi.</p>
    181 
    182 
    183 
    184 <h2 id="ResourcesFromXml">Mengakses Sumber Daya dari XML</h2>
    185 
    186 <p>Anda bisa mendefinisikan nilai untuk beberapa atribut dan elemen XML dengan menggunakan
    187 acuan ke sumber daya yang ada. Anda akan sering melakukannya saat membuat file layout, untuk
    188 memasok string dan gambar bagi widget Anda.</p>
    189 
    190 <p>Misalnya, jika Anda menambahkan sebuah {@link android.widget.Button} ke layout, Anda harus menggunakan
    191 sebuah <a href="string-resource.html">sumber daya string</a> bagi teks tombolnya:</p>
    192 
    193 <pre>
    194 &lt;Button
    195     android:layout_width="fill_parent"
    196     android:layout_height="wrap_content"
    197     android:text="<strong>@string/submit</strong>" /&gt;
    198 </pre>
    199 
    200 
    201 <h3>Sintaks</h3>
    202 
    203 <p>Berikut adalah sintaks untuk mengacu sumber daya di sumber daya XML:</p>
    204 
    205 <pre class="classic no-pretty-print">
    206 &#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
    207 </pre>
    208 
    209 <ul>
    210   <li>{@code &lt;package_name&gt;} adalah nama paket yang di dalamnya terdapat sumber daya (tidak
    211 dibutuhkan bila mengacu sumber daya dari paket yang sama)</li>
    212   <li>{@code &lt;resource_type&gt;} adalah subkelas
    213 {@code R} untuk tipe sumber daya</li>
    214   <li>{@code &lt;resource_name&gt;} bisa berupa nama file sumber daya
    215 tanpa ekstensi atau nilai atribut {@code android:name} dalam elemen XML (untuk nilai
    216 sederhana).</li>
    217 </ul>
    218 
    219 <p>Lihat <a href="available-resources.html">Tipe Sumber Daya</a> untuk
    220 informasi selengkapnya tentang masing-masing tipe sumber daya dan cara mengacunya.</p>
    221 
    222 
    223 <h3>Kasus penggunaan</h3>
    224 
    225 <p>Dalam beberapa kasus, Anda harus menggunakan sumber daya untuk suatu nilai dalam XML (misalnya, untuk menerapkan gambar yang bisa ditarik
    226 pada widget), namun Anda juga bisa menggunakan sumber daya di XML mana saja yang menerima nilai sederhana. Misalnya, jika
    227 Anda mempunyai file sumber daya berikut yang berisi <a href="more-resources.html#Color">sumber daya warna</a> dan <a href="string-resource.html">sumber daya string</a>:</p>
    228 
    229 <pre>
    230 &lt;?xml version="1.0" encoding="utf-8"?>
    231 &lt;resources>
    232    &lt;color name="opaque_red">#f00&lt;/color>
    233    &lt;string name="hello">Hello!&lt;/string>
    234 &lt;/resources>
    235 </pre>
    236 
    237 <p>Anda bisa menggunakan sumber daya ini dalam file layout berikut untuk mengatur warna teks dan
    238 string teks:</p>
    239 
    240 <pre>
    241 &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
    242 &lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android";
    243     android:layout_width=&quot;fill_parent&quot;
    244     android:layout_height=&quot;fill_parent&quot;
    245     android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
    246     android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
    247 </pre>
    248 
    249 <p>Dalam hal ini, Anda tidak perlu menyebutkan nama paket dalam sumber daya acuan karena
    250 sumber daya berasal dari paket Anda sendiri. Untuk
    251 mengacu sumber daya sistem, Anda perlu memasukkan nama paketnya. Misalnya:</p>
    252 
    253 <pre>
    254 &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
    255 &lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android";
    256     android:layout_width=&quot;fill_parent&quot;
    257     android:layout_height=&quot;fill_parent&quot;
    258     android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
    259     android:text=&quot;&#64;string/hello&quot; /&gt;
    260 </pre>
    261 
    262 <p class="note"><strong>Catatan:</strong> Anda harus menggunakan sumber daya string sepanjang 
    263 waktu, sehingga aplikasi Anda bisa dilokalkan untuk bahasa lain. 
    264 Untuk informasi tentang cara menciptakan
    265 sumber daya alternatif (seperti string lokal), lihat <a href="providing-resources.html#AlternativeResources">Menyediakan Sumber Daya Alternatif
    266 </a>. Untuk panduan lengkap melokalkan aplikasi Anda ke bahasa lain,
    267 lihat <a href="localization.html">Pelokalan</a>.</p>
    268 
    269 <p>Anda bahkan bisa menggunakan sumber daya dalam XML untuk membuat alias. Misalnya, Anda bisa membuat
    270 sumber daya yang bisa ditarik yang merupakan alias bagi sumber daya yang bisa ditarik lainnya:</p>
    271 
    272 <pre>
    273 &lt;?xml version="1.0" encoding="utf-8"?>
    274 &lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    275     android:src="@drawable/other_drawable" />
    276 </pre>
    277 
    278 <p>Hal ini terdengar berlebihan, namun bisa sangat berguna saat menggunakan sumber daya alternatif. Baca selengkapnya tentang
    279 <a href="providing-resources.html#AliasResources">Membuat sumber daya alias</a>.</p>
    280 
    281 
    282 
    283 <h3 id="ReferencesToThemeAttributes">Mengacu atribut gaya</h3>
    284 
    285 <p>Sumber daya atribut gaya memungkinkan Anda mengacu nilai
    286 suatu atribut dalam tema yang diterapkan saat ini. Dengan mengacu sebuah atribut gaya memungkinkan Anda
    287 menyesuaikan tampilan elemen UI dengan mengatur gayanya agar cocok dengan beragam variasi standar yang dipasok oleh
    288 tema saat ini, sebagai ganti memasok nilai yang ditanamkan (hard-coded). Mengacu sebuah atribut gaya
    289 pada dasarnya adalah "gunakan gaya yang didefinisikan oleh atribut ini, dalam tema saat ini".</p>
    290 
    291 <p>Untuk mengacu sebuah atribut gaya, sintaks namanya hampir sama dengan format sumber daya normal
    292 , namun sebagai ganti simbol @ ({@code @}), gunakan sebuah tanda tanya ({@code ?}), dan
    293 porsi tipe sumber daya bersifat opsional. Sebagai contoh:</p>
    294 
    295 <pre class="classic">
    296 ?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
    297 </pre>
    298 
    299 <p>Misalnya, begini cara Anda mengacu suatu atribut untuk mengatur warna teks agar cocok dengan
    300 warna teks "utama" tema sistem:</p>
    301 
    302 <pre>
    303 &lt;EditText id=&quot;text&quot;
    304     android:layout_width=&quot;fill_parent&quot;
    305     android:layout_height=&quot;wrap_content&quot;
    306     android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
    307     android:text=&quot;&#64;string/hello_world&quot; /&gt;
    308 </pre>
    309 
    310 <p>Di sini, atribut {@code android:textColor} menyebutkan nama atribut gaya
    311 dalam tema saat ini. Android kini menggunakan nilai yang diterapkan pada atribut gaya {@code android:textColorSecondary}
    312 sebagai nilai untuk {@code android:textColor} dalam widget ini. Karena alat sumber daya
    313 mengetahui bahwa atribut sumber daya diharapkan dalam konteks ini,
    314 maka Anda tidak perlu menyatakan tipenyanya secara eksplisit (yang akan berupa
    315 <code>?android:attr/textColorSecondary</code>)&mdash;Anda bisa mengecualikan tipe {@code attr}.</p>
    316 
    317 
    318 
    319 
    320 <h2 id="PlatformResources">Mengakses Sumber Daya Platform</h2>
    321 
    322 <p>Android berisi sejumlah sumber daya standar, seperti gaya, tema, dan layout. Untuk
    323 mengakses semua sumber daya ini, tetapkan acuan sumber daya Anda dengan nama paket
    324 <code>android</code>. Misalnya, Android menyediakan sumber daya layout yang bisa Anda gunakan untuk
    325 item daftar dalam{@link android.widget.ListAdapter}:</p>
    326 
    327 <pre>
    328 {@link android.app.ListActivity#setListAdapter(ListAdapter)
    329 setListAdapter}(new {@link
    330 android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
    331 </pre>
    332 
    333 <p>Dalam contoh ini, {@link android.R.layout#simple_list_item_1} adalah sumber daya layout yang didefinisikan oleh
    334 platform untuk item di {@link android.widget.ListView}. Anda bisa menggunakannya sebagai ganti menciptakan
    335 layout sendiri untuk item daftar. Untuk informasi selengkapnya, lihat panduan pengembang 
    336 <a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>.</p>
    337 
    338