| page.title=Mengakses Sumber Daya |
| parent.title=Sumber Daya Aplikasi |
| parent.link=index.html |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>Tampilan Cepat</h2> |
| <ul> |
| <li>Sumber daya bisa diacu dari kode dengan menggunakan integer dari {@code R.java}, seperti |
| {@code R.drawable.myimage}</li> |
| <li>Sumber daya bisa diacu dari sumber daya dengan menggunakan sintaks XML khusus, seperti {@code |
| @drawable/myimage}</li> |
| <li>Anda juga bisa mengakses sumber daya aplikasi Anda dengan berbagai metode di |
| {@link android.content.res.Resources}</li> |
| </ul> |
| |
| <h2>Kelas-Kelas Utama</h2> |
| <ol> |
| <li>{@link android.content.res.Resources}</li> |
| </ol> |
| |
| <h2>Dalam dokumen ini</h2> |
| <ol> |
| <li><a href="#ResourcesFromCode">Mengakses Sumber Daya dari Kode</a></li> |
| <li><a href="#ResourcesFromXml">Mengakses Sumber Daya dari XML</a> |
| <ol> |
| <li><a href="#ReferencesToThemeAttributes">Mengacu atribut gaya</a></li> |
| </ol> |
| </li> |
| <li><a href="#PlatformResources">Mengakses Sumber Daya Platform</a></li> |
| </ol> |
| |
| <h2>Lihat juga</h2> |
| <ol> |
| <li><a href="providing-resources.html">Menyediakan Sumber Daya</a></li> |
| <li><a href="available-resources.html">Tipe Sumber Daya</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| |
| |
| |
| <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 |
| mengacu ID sumber dayanya. Semua ID sumber daya didefinisikan di kelas {@code R} proyek Anda, yang |
| dihasilkan oleh alat {@code aapt} secara otomatis.</p> |
| |
| <p>Bila aplikasi Anda dikompilasi, {@code aapt} akan membuat kelas {@code R}, yang berisi |
| ID sumber daya untuk semua sumber daya dalam direktori {@code |
| res/} Anda. Untuk masing-masing tipe sumber daya, ada subkelas {@code R} (misalnya, |
| {@code R.drawable} untuk semua sumber daya yang bisa ditarik), dan untuk masing-masing sumber daya dari tipe itu, ada satu integer statis |
| (misalnya, {@code R.drawable.icon}). Integer ini adalah ID sumber daya yang bisa Anda gunakan |
| untuk mengambil sumber daya Anda.</p> |
| |
| <p>Walaupun kelas {@code R} adalah tempat menyebutkan ID sumber daya, Anda tidak perlu |
| melihat ke sana untuk menemukan ID sumber daya. ID sumber daya selalu terdiri dari:</p> |
| <ul> |
| <li><em>Tipe sumber daya</em>: Masing-masing sumber daya dikelompokkan menjadi "tipe", misalnya {@code |
| string}, {@code drawable}, dan {@code layout}. Untuk mengetahui selengkapnya tentang berbagai tipe, lihat <a href="available-resources.html">Tipe Sumber Daya</a>. |
| </li> |
| <li><em>Nama sumber daya</em>, bisa berupa: nama file, |
| tidak termasuk ekstensi; atau nilai dalam atribut {@code android:name} XML, jika |
| sumber daya itu sebuah nilai sederhana (misalnya sebuah string).</li> |
| </ul> |
| |
| <p>Ada dua cara untuk mengakses sumber daya:</p> |
| <ul> |
| <li><strong>Dalam kode:</strong> Menggunakan integer statis dari subkelas dari kelas {@code R} |
| , misalnya: |
| <pre class="classic no-pretty-print">R.string.hello</pre> |
| <p>{@code string} adalah tipe sumber daya dan {@code hello} adalah nama sumber daya. Ada banyak |
| API Android yang bisa mengakses sumber daya Anda bila Anda menyediakan ID sumber daya dengan format ini. Lihat |
| <a href="#ResourcesFromCode">Mengakses Sumber Daya dalam Kode</a>.</p> |
| </li> |
| <li><strong>Dalam XML:</strong> Menggunakan sebuah sintaks XML khusus yang juga berkaitan dengan |
| ID sumber daya yang didefinisikan dalam kelas {@code R}, misalnya: |
| <pre class="classic no-pretty-print">@string/hello</pre> |
| <p>{@code string} adalah tipe sumber daya dan {@code hello} adalah nama sumber daya. Anda bisa menggunakan |
| 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> |
| </li> |
| </ul> |
| |
| |
| |
| <h2 id="ResourcesFromCode">Mengakses Sumber Daya dalam Kode </h2> |
| |
| <p>Anda bisa menggunakan sumber daya dalam kode dengan menyalurkan ID sumber daya sebagai sebuah parameter metode. Misalnya, |
| Anda bisa mengatur sebuah {@link android.widget.ImageView} agar menggunakan sumber daya{@code res/drawable/myimage.png} |
| dengan menggunakan {@link android.widget.ImageView#setImageResource(int) setImageResource()}:</p> |
| <pre> |
| ImageView imageView = (ImageView) findViewById(R.id.myimageview); |
| imageView.setImageResource(<strong>R.drawable.myimage</strong>); |
| </pre> |
| |
| <p>Anda juga bisa mengambil tiap sumber daya dengan menggunakan berbagai metode di {@link |
| android.content.res.Resources}, di mana Anda bisa mendapatkan instance |
| {@link android.content.Context#getResources()}.</p> |
| |
| <div class="sidebox-wrapper"> |
| <div class="sidebox"> |
| <h2>Akses ke File Asli</h2> |
| |
| <p>Walaupun tidak lazim, Anda mungkin perlu mengakses file dan direktori asli Anda. Jika demikian, maka |
| menyimpan file Anda di {@code res/} tidak akan berhasil, karena satu-satunya cara untuk membaca sebuah sumber daya dari |
| {@code res/} adalah dengan ID sumber daya. Sebagai gantinya, Anda bisa menyimpan sumber daya dalam direktori |
| {@code assets/}.</p> |
| <p>File yang tersimpan di direktori {@code assets/} <em>tidak</em> diberi ID |
| sumber daya, sehingga Anda tidak bisa mengacunya melalui kelas {@code R} atau dari sumber daya XML. Sebagai gantinya, Anda bisa melakukan |
| query file di direktori {@code assets/} seperti sebuah sistem file biasa dan membaca data mentah dengan menggunakan |
| {@link android.content.res.AssetManager}.</p> |
| <p>Akan tetapi, jika yang Anda butuhkan hanya kemampuan membaca data mentah (misalnya sebuah file video atau audio), |
| maka simpanlah file itu di direktori {@code res/raw/} dan baca aliran byte dengan menggunakan {@link |
| android.content.res.Resources#openRawResource(int) openRawResource()}.</p> |
| |
| </div> |
| </div> |
| |
| |
| <h3>Sintaks</h3> |
| |
| <p>Inilah sintaks untuk mengacu sumber daya dalam kode:</p> |
| |
| <pre class="classic no-pretty-print"> |
| [<em><package_name></em>.]R.<em><resource_type></em>.<em><resource_name></em> |
| </pre> |
| |
| <ul> |
| <li><em> {@code <package_name>}</em>adalah nama paket yang di dalamnya terdapat sumber daya (tidak |
| dibutuhkan bila mengacu sumber daya dari paket Anda sendiri).</li> |
| <li><em>{@code <resource_type>}</em> adalah subkelas {@code R} untuk tipe sumber daya.</li> |
| <li><em>{@code <resource_name>}</em> bisa berupa nama file sumber daya |
| tanpa ekstensi atau nilai atribut {@code android:name} dalam elemen XML (untuk nilai |
| sederhana).</li> |
| </ul> |
| <p>Lihat <a href="available-resources.html">Tipe Sumber Daya</a> untuk |
| informasi selengkapnya tentang masing-masing tipe sumber daya dan cara mengacunya.</p> |
| |
| |
| <h3>Kasus penggunaan</h3> |
| |
| <p>Ada banyak metode yang menerima parameter ID sumber daya dan Anda bisa mengambil sumber daya dengan menggunakan |
| metode di {@link android.content.res.Resources}. Anda bisa mengambil instance {@link |
| android.content.res.Resources} dengan {@link android.content.Context#getResources |
| Context.getResources()}.</p> |
| |
| |
| <p>Berikut adalah beberapa contoh cara mengakses sumber daya dalam kode:</p> |
| |
| <pre> |
| // Load a background for the current screen from a drawable resource |
| {@link android.app.Activity#getWindow()}.{@link |
| android.view.Window#setBackgroundDrawableResource(int) |
| setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ; |
| |
| // Set the Activity title by getting a string from the Resources object, because |
| // this method requires a CharSequence rather than a resource ID |
| {@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence) |
| setTitle}(getResources().{@link android.content.res.Resources#getText(int) |
| getText}(<strong>R.string.main_title</strong>)); |
| |
| // Load a custom layout for the current screen |
| {@link android.app.Activity#setContentView(int) |
| setContentView}(<strong>R.layout.main_screen</strong>); |
| |
| // Set a slide in animation by getting an Animation from the Resources object |
| mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation) |
| setInAnimation}(AnimationUtils.loadAnimation(this, |
| <strong>R.anim.hyperspace_in</strong>)); |
| |
| // Set the text on a TextView object using a resource ID |
| TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>); |
| msgTextView.{@link android.widget.TextView#setText(int) |
| setText}(<strong>R.string.hello_message</strong>); |
| </pre> |
| |
| |
| <p class="caution"><strong>Perhatian:</strong> Anda tidak boleh memodifikasi file {@code |
| R.java} secara manual—, ini dihasilkan oleh alat {@code aapt} bila proyek Anda telah |
| dikompilasi. Perubahan apa pun akan ditimpa bila nanti Anda mengompilasi.</p> |
| |
| |
| |
| <h2 id="ResourcesFromXml">Mengakses Sumber Daya dari XML</h2> |
| |
| <p>Anda bisa mendefinisikan nilai untuk beberapa atribut dan elemen XML dengan menggunakan |
| acuan ke sumber daya yang ada. Anda akan sering melakukannya saat membuat file layout, untuk |
| memasok string dan gambar bagi widget Anda.</p> |
| |
| <p>Misalnya, jika Anda menambahkan sebuah {@link android.widget.Button} ke layout, Anda harus menggunakan |
| sebuah <a href="string-resource.html">sumber daya string</a> bagi teks tombolnya:</p> |
| |
| <pre> |
| <Button |
| android:layout_width="fill_parent" |
| android:layout_height="wrap_content" |
| android:text="<strong>@string/submit</strong>" /> |
| </pre> |
| |
| |
| <h3>Sintaks</h3> |
| |
| <p>Berikut adalah sintaks untuk mengacu sumber daya di sumber daya XML:</p> |
| |
| <pre class="classic no-pretty-print"> |
| @[<em><package_name></em>:]<em><resource_type></em>/<em><resource_name></em> |
| </pre> |
| |
| <ul> |
| <li>{@code <package_name>} adalah nama paket yang di dalamnya terdapat sumber daya (tidak |
| dibutuhkan bila mengacu sumber daya dari paket yang sama)</li> |
| <li>{@code <resource_type>} adalah subkelas |
| {@code R} untuk tipe sumber daya</li> |
| <li>{@code <resource_name>} bisa berupa nama file sumber daya |
| tanpa ekstensi atau nilai atribut {@code android:name} dalam elemen XML (untuk nilai |
| sederhana).</li> |
| </ul> |
| |
| <p>Lihat <a href="available-resources.html">Tipe Sumber Daya</a> untuk |
| informasi selengkapnya tentang masing-masing tipe sumber daya dan cara mengacunya.</p> |
| |
| |
| <h3>Kasus penggunaan</h3> |
| |
| <p>Dalam beberapa kasus, Anda harus menggunakan sumber daya untuk suatu nilai dalam XML (misalnya, untuk menerapkan gambar yang bisa ditarik |
| pada widget), namun Anda juga bisa menggunakan sumber daya di XML mana saja yang menerima nilai sederhana. Misalnya, jika |
| 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> |
| |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <resources> |
| <color name="opaque_red">#f00</color> |
| <string name="hello">Hello!</string> |
| </resources> |
| </pre> |
| |
| <p>Anda bisa menggunakan sumber daya ini dalam file layout berikut untuk mengatur warna teks dan |
| string teks:</p> |
| |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <EditText xmlns:android="http://schemas.android.com/apk/res/android" |
| android:layout_width="fill_parent" |
| android:layout_height="fill_parent" |
| android:textColor="<strong>@color/opaque_red</strong>" |
| android:text="<strong>@string/hello</strong>" /> |
| </pre> |
| |
| <p>Dalam hal ini, Anda tidak perlu menyebutkan nama paket dalam sumber daya acuan karena |
| sumber daya berasal dari paket Anda sendiri. Untuk |
| mengacu sumber daya sistem, Anda perlu memasukkan nama paketnya. Misalnya:</p> |
| |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <EditText xmlns:android="http://schemas.android.com/apk/res/android" |
| android:layout_width="fill_parent" |
| android:layout_height="fill_parent" |
| android:textColor="<strong>@android:color/secondary_text_dark</strong>" |
| android:text="@string/hello" /> |
| </pre> |
| |
| <p class="note"><strong>Catatan:</strong> Anda harus menggunakan sumber daya string sepanjang |
| waktu, sehingga aplikasi Anda bisa dilokalkan untuk bahasa lain. |
| Untuk informasi tentang cara menciptakan |
| sumber daya alternatif (seperti string lokal), lihat <a href="providing-resources.html#AlternativeResources">Menyediakan Sumber Daya Alternatif |
| </a>. Untuk panduan lengkap melokalkan aplikasi Anda ke bahasa lain, |
| lihat <a href="localization.html">Pelokalan</a>.</p> |
| |
| <p>Anda bahkan bisa menggunakan sumber daya dalam XML untuk membuat alias. Misalnya, Anda bisa membuat |
| sumber daya yang bisa ditarik yang merupakan alias bagi sumber daya yang bisa ditarik lainnya:</p> |
| |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <bitmap xmlns:android="http://schemas.android.com/apk/res/android" |
| android:src="@drawable/other_drawable" /> |
| </pre> |
| |
| <p>Hal ini terdengar berlebihan, namun bisa sangat berguna saat menggunakan sumber daya alternatif. Baca selengkapnya tentang |
| <a href="providing-resources.html#AliasResources">Membuat sumber daya alias</a>.</p> |
| |
| |
| |
| <h3 id="ReferencesToThemeAttributes">Mengacu atribut gaya</h3> |
| |
| <p>Sumber daya atribut gaya memungkinkan Anda mengacu nilai |
| suatu atribut dalam tema yang diterapkan saat ini. Dengan mengacu sebuah atribut gaya memungkinkan Anda |
| menyesuaikan tampilan elemen UI dengan mengatur gayanya agar cocok dengan beragam variasi standar yang dipasok oleh |
| tema saat ini, sebagai ganti memasok nilai yang ditanamkan (hard-coded). Mengacu sebuah atribut gaya |
| pada dasarnya adalah "gunakan gaya yang didefinisikan oleh atribut ini, dalam tema saat ini".</p> |
| |
| <p>Untuk mengacu sebuah atribut gaya, sintaks namanya hampir sama dengan format sumber daya normal |
| , namun sebagai ganti simbol @ ({@code @}), gunakan sebuah tanda tanya ({@code ?}), dan |
| porsi tipe sumber daya bersifat opsional. Sebagai contoh:</p> |
| |
| <pre class="classic"> |
| ?[<em><package_name></em>:][<em><resource_type></em>/]<em><resource_name></em> |
| </pre> |
| |
| <p>Misalnya, begini cara Anda mengacu suatu atribut untuk mengatur warna teks agar cocok dengan |
| warna teks "utama" tema sistem:</p> |
| |
| <pre> |
| <EditText id="text" |
| android:layout_width="fill_parent" |
| android:layout_height="wrap_content" |
| android:textColor="<strong>?android:textColorSecondary</strong>" |
| android:text="@string/hello_world" /> |
| </pre> |
| |
| <p>Di sini, atribut {@code android:textColor} menyebutkan nama atribut gaya |
| dalam tema saat ini. Android kini menggunakan nilai yang diterapkan pada atribut gaya {@code android:textColorSecondary} |
| sebagai nilai untuk {@code android:textColor} dalam widget ini. Karena alat sumber daya |
| mengetahui bahwa atribut sumber daya diharapkan dalam konteks ini, |
| maka Anda tidak perlu menyatakan tipenyanya secara eksplisit (yang akan berupa |
| <code>?android:attr/textColorSecondary</code>)—Anda bisa mengecualikan tipe {@code attr}.</p> |
| |
| |
| |
| |
| <h2 id="PlatformResources">Mengakses Sumber Daya Platform</h2> |
| |
| <p>Android berisi sejumlah sumber daya standar, seperti gaya, tema, dan layout. Untuk |
| mengakses semua sumber daya ini, tetapkan acuan sumber daya Anda dengan nama paket |
| <code>android</code>. Misalnya, Android menyediakan sumber daya layout yang bisa Anda gunakan untuk |
| item daftar dalam{@link android.widget.ListAdapter}:</p> |
| |
| <pre> |
| {@link android.app.ListActivity#setListAdapter(ListAdapter) |
| setListAdapter}(new {@link |
| android.widget.ArrayAdapter}<String>(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray)); |
| </pre> |
| |
| <p>Dalam contoh ini, {@link android.R.layout#simple_list_item_1} adalah sumber daya layout yang didefinisikan oleh |
| platform untuk item di {@link android.widget.ListView}. Anda bisa menggunakannya sebagai ganti menciptakan |
| layout sendiri untuk item daftar. Untuk informasi selengkapnya, lihat panduan pengembang |
| <a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>.</p> |
| |