lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

Sumber Daya Dapat Digambar

Sumber daya dapat digambar adalah konsep umum untuk grafik yang dapat digambar pada layar dan bisa ditampilkan dengan API seperti getDrawable(int) atau diterapkan ke sumber daya XML lainnya dengan atribut seperti android:drawable dan android:icon. Terdapat beberapa jenis sumber daya dapat digambar:

File Bitmap
File grafik bitmap (.png, .jpg, atau .gif). Membuat BitmapDrawable.
File Nine-Patch
File PNG dengan region yang dapat direntangkan sehingga ukuran gambar bisa diubah berdasarkan materi (.9.png). Membuat NinePatchDrawable.
Daftar Layer
Sumber daya dapat digambar yang mengelola serangkaian sumber daya dapat digambar lainnya. Ini digambar dalam urutan larik, sehingga elemen dengan indeks terbesar digambar pada paling atas. Membuat LayerDrawable.
Daftar status
File XML yang merujuk pada berbagai grafik bitmap untuk berbagai kondisi (misalnya, menggunakan gambar yang berbeda ketika satu tombol ditekan). Membuat StateListDrawable.
Daftar Tingkat
File XML yang mendefinisikan sumber daya dapat digambar yang mengelola sejumlah sumber daya dapat digambar alternatif, masing-masing disertai nilai numerik maksimum. Membuat LevelListDrawable.
Sumber Daya Dapat Digambar untuk Transisi
File XML yang mendefinisikan sumber daya dapat digambar yang bisa memudar bersilang antara dua sumber daya dapat digambar. Membuat TransitionDrawable.
Sumber Daya Dapat Digambar untuk Sisipan
File XML yang mendefinisikan sumber daya dapat digambar yang menyisipkan sumber daya dapat digambar lainnya dengan jarak yang telah ditetapkan. Hal ini berguna ketika Tampilan memerlukan latar belakang dapat digambar yang lebih kecil dari batas Tampilan sebenarnya.
Sumber Daya Dapat Digambar untuk Pemotongan
File XML yang mendefinisikan sumber daya dapat digambar yang memotong sumber daya Dapat Digambar lainnya berdasarkan nilai tingkat saat ini. Membuat ClipDrawable.
Sumber Daya Dapat Digambar untuk Skala
File XML yang mendefinisikan sumber daya dapat digambar yang mengubah ukuran sumber daya Dapat Digambar lain berdasarkan nilai tingkat saat ini. Membuat ScaleDrawable
Sumber Daya Dapat Digambar untuk Bentuk
File XML yang mendefinisikan bentuk geometris, termasuk warna dan gradien. Membuat ShapeDrawable.

Lihat juga dokumen Sumber Daya Animasi untuk cara membuat AnimationDrawable.

Catatan: Sumber daya warna juga dapat digunakan sebagai sumber daya dapat digambar pada XML. Misalnya, saat membuat sebuah daftar status sumber daya dapat digambar, Anda bisa mereferensikan sebuah sumber daya warna untuk atribut android:drawable (android:drawable="@color/green").

Bitmap

Gambar bitmap. Android mendukung file bitmap dalam tiga format: .png (preferensi), .jpg (berterima), .gif (tidak dikehendaki).

Anda bisa merujuk file bitmap secara langsung, menggunakan nama file sebagai ID sumber daya, atau buat ID sumber daya alias di XML.

Catatan: File bitmap mungkin dioptimalkan secara otomatis dengan kompresi gambar lossless oleh alat aapt selama proses pembangunan. Misalnya, PNG warna sejati yang tidak memerlukan lebih dari 256 warna mungkin diubah ke PNG 8-bit dengan palet warna. Ini akan menghasilkan gambar dengan kualitas setara tetapi membutuhkan memori lebih sedikit. Jadi ketahuilah bahwa biner gambar yang berada dalam direktori dapat berubah selama pembangunan. Jika Anda berencana membaca gambar sebagai aliran bit untuk mengonversinya ke bitmap, taruh gambar dalam folder res/raw/, di situ tidak akan dioptimalkan.

File bitmap

File bitmap adalah file .png, .jpg, atau .gif. Android membuat sumber daya Drawable untuk setiap file ini ketika Anda menyimpannya dalam direktori res/drawable/.

lokasi file:
res/drawable/filename.png (.png, .jpg, atau .gif)
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke BitmapDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
contoh:
Dengan gambar yang disimpan pada res/drawable/myimage.png, XML layout ini menerapkan gambar ke Tampilan:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" />

Kode aplikasi berikut menampilkan gambar sebagai Drawable:

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
lihat juga:

Bitmap XML

Bitmap XML adalah sumber daya yang didefinisikan pada XML yang mengarah pada file bitmap. Dampaknya adalah alias untuk bitmap raw. XML dapat menentukan properti tambahan untuk bitmap seperti dithering dan pemetakan.

Catatan: Anda bisa menggunakan elemen <bitmap> sebagai anak dari <item>. Misalnya, saat membuat daftar status atau daftar layer, Anda bisa mengecualikan android:drawable atribut dari elemen <item> dan menyarangkan <bitmap> di dalamnya yang mendefinisikan item yang dapat digambar.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke BitmapDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:mipMap=["true" | "false"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
elemen:
<bitmap>
Mendefinisikan sumber bitmap dan propertinya.

atribut:

xmlns:android
String. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android". Ini diperlukan hanya bila <bitmap> adalah elemen akar—tidak diperlukan ketika <bitmap> disarangkan di dalam <item>.
android:src
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar.
android:antialias
Boolean. Mengaktifkan atau menonaktifkan penggunaan antialias.
android:dither
Boolean. Mengaktifkan atau menonaktifkan dithering pada bitmap jika bitmap tidak memiliki konfigurasi piksel yang sama dengan layar (misalnya: bitmap ARGB 8888 dengan layar RGB 565).
android:filter
Boolean. Mengaktifkan atau menonaktifkan pemfilteran bitmap. Pemfilteran digunakan bila bitmap diciutkan atau dibentangkan untuk memperhalus tampilannya.
android:gravity
Kata kunci. Mendefinisikan gravitasi untuk bitmap. Gravitasi menunjukkan lokasi penempatan sumber daya dapat digambar dalam kontainernya jika bitmap lebih kecil dari kontainernya.

Harus satu atau beberapa (yang dipisah tanda '|') dari nilai konstanta berikut:

NilaiKeterangan
top Menempatkan objek di bagian atas kontainernya, tanpa mengubah ukurannya.
bottom Menempatkan objek di bagian bawah kontainernya, tanpa mengubah ukurannya.
left Menempatkan objek di bagian tepi kiri kontainernya, tanpa mengubah ukurannya.
right Menempatkan objek di bagian tepi kanan kontainernya, tanpa mengubah ukurannya.
center_vertical Menempatkan objek pada bagian tengah horizontal kontainernya, tanpa mengubah ukurannya.
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya.
center_horizontal Menempatkan objek di bagian tengah horizontal kontainernya, tanpa mengubah ukurannya.
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya.
center Menempatkan objek di sumbu vertikal dan horizontal kontainernya, tanpa mengubah ukurannya.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya. Ini adalah default-nya.
clip_vertical Opsi tambahan yang dapat disetel supaya tepi bagian atas dan/atau bawah anak yang dipotongkan ke batas kontainernya. Klip ini berdasarkan gravitasi vertikal: gravitasi atas memotong tepi bagian bawah, gravitasi bawah memotong tepi bagian atas, dan tidak memotong kedua tepinya.
clip_horizontal Opsi tambahan yang dapat disetel supaya tepi bagian kiri dan/atau kanan anak dipotongkan ke batas kontainernya. Klip berdasarkan gravitasi vertikal: gravitasi kiri memotong tepi bagian kanan, gravitasi kanan memotong tepi bagian kiri, dan tidak memotong kedua tepinya.
android:mipMap
Boolean. Mengaktifkan atau menonaktifkan petunjuk mipmap. Lihat setHasMipMap() untuk informasi selengkapnya. Nilai default-nya adalah false.
android:tileMode
Kata kunci. Mendefinisikan mode petak. Bila mode petak diaktifkan, bitmap akan diulang. Gravitasi akan diabaikan bila mode petak diaktifkan.

Harus salah satu dari nilai konstanta berikut ini:

NilaiKeterangan
disabled Jangan memetakkan bitmap. Ini adalah nilai default-nya.
clamp Duplikasikan warna tepi jika shader melenceng keluar dari batas aslinya
repeat Ulangi gambar shader secara horizontal dan vertikal.
mirror Ulangi gambar shader secara horizontal dan vertikal, saling mencerminkan gambar sehingga gambar di sebelahnya selalu mulus.
contoh:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon"
    android:tileMode="repeat" />
lihat juga:

Nine-Patch

NinePatch adalah gambar PNG tempat Anda bisa mendefinisikan region yang dapat direntangkan yang diskalakan Android ketika materi dalam Tampilan melebihi batas gambar normal. Anda umumnya menetapkan gambar jenis ini sebagai latar belakang tampilan yang setidaknya memiliki satu dimensi yang disetel ke "wrap_content", dan bila Tampilan membesar guna mengakomodasi materi, gambar Nine-Patch juga diskalakan sesuai dengan ukuran Tampilannya. Contoh penggunaan gambar Nine-Patch adalah latar belakang yang digunakan oleh widget Button standar Android, yang harus membentang guna mengakomodasi teks (atau gambar) di dalam tombol.

Sama dengan bitmap biasa, Anda bisa merujuk file Nine-Patch secara langsung dari sumber daya yang didefinisikan oleh XML.

Untuk pembahasan lengkap mengenai cara membuat file Nine-Patch dengan region yang dapat direntangkan, lihat dokumen Grafik 2D.

File Nine-Patch

lokasi file:
res/drawable/filename.9.png
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke NinePatchDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
contoh:
Dengan gambar yang disimpan pada res/drawable/myninepatch.9.png, XML layout ini menerapkan Nine-Patch ke Tampilan:
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
lihat juga:

Nine-Patch XML

Nine-Patch XML adalah sumber daya yang didefinisikan dalam XML yang menunjuk ke file Nine-Patch. XML dapat menetapkan dithering untuk gambar.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke NinePatchDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:dither=["true" | "false"] />
elemen:
<nine-patch>
Mendefinisikan sumber Nine-Patch dan propertinya.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
android:src
Sumber daya dapat digambar. Diperlukan. Rujukan ke file Nine-Patch.
android:dither
Boolean. Mengaktifkan atau menonaktifkan dithering pada bitmap jika bitmap tidak memiliki konfigurasi piksel yang sama dengan layar (misalnya: bitmap ARGB 8888 dengan layar RGB 565).
contoh:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/myninepatch"
    android:dither="false" />

Daftar Layer

LayerDrawable adalah objek dapat digambar yang mengelola serangkaian sumber daya dapat digambar lainnya. Setiap sumber daya dapat digambar yang ada dalam daftar akan digambar sesuai urutan daftar—urutan terakhir sumber daya dapat digambar akan digambar di bagian atas.

Setiap sumber daya dapat digambar diwakili oleh satu elemen <item> di dalam satu elemen <layer-list>.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke LayerDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</layer-list>
elemen:
<layer-list>
Diperlukan. Ini harus berupa elemen akar. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
<item>
Mendefinisikan sumber daya dapat digambar ke lokasi di sumberdaya dapat digambar layer, pada posisi yang didefinisikan oleh atributnya. Harus anak dari elemen <selector>. Menerima elemen <bitmap> anak.

atribut:

android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar.
android:id
ID Sumber Daya. ID sumber daya unik untuk sumber daya dapat digambar. Dalam membuat ID sumber daya baru untuk item ini, gunakan format: "@+id/name". Simbol plus menunjukkan bahwa hal ini harus dibuat sebagai ID baru. Anda bisa menggunakan identifier ini untuk mengambil dan memodifikasi sumber daya dapat digambar dengan View.findViewById() atau Activity.findViewById().
android:top
Integer. Offset atas dalam piksel.
android:right
Integer. Offset kanan dalam piksel.
android:bottom
Integer. Offset bawah dalam piksel.
android:left
Integer. Offset kiri dalam piksel.

Semua item dapat digambar diskalakan agar pas dengan ukuran Tampilan yang menampungnya, secara default. Oleh karena itu, menempatkan gambar pada daftar layer pada berbagai posisi dapat meningkatkan ukuran Tampilan dan beberapa gambar menskalakan sebagaimana mestinya. Untuk menghindari penskalaan item dalam daftar, gunakan elemen <bitmap> di dalam elemen <item> untuk menetapkan sumber daya dapat digambar dan mendefinisikan gravitasi dengan sesuatu yang skalanya tetap, misalnya "center". Misalnya, <item> berikut mendefinisikan sebuah item yang di skalakan agar masuk ke Tampilan kontainernya:

<item android:drawable="@drawable/image" />

Guna menghindari penskalaan, contoh berikut menggunakan elemen <bitmap> dengan gravitasi terpusat:

<item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
contoh:
File XML disimpan di res/drawable/layers.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

Perhatikan bahwa contoh ini menggunakan elemen <bitmap> tersarang untuk mendefinisikan sumber daya dapat digambar untuk setiap item dengan gravitasi "pusat". Untuk memastikan bahwa tidak satu pun gambar diskalakan sesuai ukuran kontainernya, dikarenakan perubahan ukuran oleh gambar offset.

XML layout ini menerapkan sumber daya dapat digambar ke Tampilan:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

Hasilnya adalah tumpukan gambar offset yang meningkat:

lihat juga:

Daftar Status

StateListDrawable adalah objek dapat digambar yang didefinisikan dalam XML yang menggunakan sejumlah gambar berbeda untuk merepresentasikan grafik yang sama, bergantung pada status objek. Misalnya, sebuah widget Button bisa muncul di salah satu atau sejumlah status berbeda (ditekan, terfokus, atau tidak keduanya) dan, menggunakan daftar status sumber daya dapat digambar, Anda bisa menyediakan gambar latar belakang yang berbeda untuk masing-masing status.

Anda bisa menjelaskan daftar status pada file XML. Setiap grafik diwakili oleh elemen <item> di dalam satu elemen <selector>. Setiap <item> menggunakan beragam atribut untuk menjelaskan status yang harus digunakan sebagai grafik untuk sumber daya dapat digambar.

Selama perubahan status, daftar status akan dialihkan dari bagian atas ke bawah dan item pertama yang cocok dengan status saat ini akan digunakan—pemilihan ini tidak berdasarkan pada "kecocokan terbaik," tetapi cukup dengan item pertama yang memenuhi kriteria minimum status tersebut.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke StateListDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>
elemen:
<selector>
Diperlukan. Ini harus berupa elemen akar. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
android:constantSize
Boolean. "true" jika ukuran internal dari sumber daya dapat digambar yang dilaporkan tetap konstan saat status berubah (ukuran maksimum status); "false" jika ukuran berbeda berdasarkan status saat ini. Default-nya adalah false.
android:dither
Boolean. "true" untuk mengaktifkan dithering pada bitmap jika bitmap tidak memiliki konfigurasi piksel yang sama seperti layar (misalnya, bitmap ARGB 8888 dengan layar RGB 565); "false" untuk menonaktifkan dithering. Default-nya adalah true.
android:variablePadding
Boolean. "true" jika padding dari sumber daya dapat digambar harus berubah berdasarkan status saat ini yang dipilih; "false" jika padding harus tetap sama (berdasarkan padding maksimum dari semua status). Mengaktifkan fitur ini mengharuskan Anda mengatur layout saat status berubah, yang sering kali tidak didukung. Default-nya adalah false.
<item>
Mendefinisikan sumber daya dapat digambar yang akan digunakan selama status tertentu, seperti yang dijelaskan oleh atributnya. Harus anak dari elemen <selector>.

atribut:

android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar.
android:state_pressed
Boolean. "true" jika item harus digunakan saat objek ditekan (seperti saat tombol disentuh/diklik); "false" jika item ini harus digunakan dalam default, status tanpa tekanan.
android:state_focused
Boolean. "true" jika item ini harus digunakan saat objek memiliki fokus input (seperti bila pengguna memilih masukan teks); "false" jika item ini harus digunakan dalam default, status tanpa fokus.
android:state_hovered
Boolean. "true" jika item ini harus digunakan ketika kursor diarahkan ke objek; "false" jika item ini harus digunakan dalam status default, status tanpa fungsi arahkan ke atas. Sering kali, sumber daya dapat digambar ini merupakan sumber daya yang sama dengan yang digunakan untuk status "focused".

Diperkenalkan dalam API level 14.

android:state_selected
Boolean. "true" jika item ini harus digunakan bila objek merupakan pilihan pengguna saat ini ketika menavigasi dengan kontrol arah (seperti saat menavigasikan melalui daftar dengan d-pad); "false" jika item ini harus digunakan bila objek tidak dipiih.

Status yang dipilih digunakan bila fokus (android:state_focused) tidak mencukupi (misalnya saat tampilan daftar memiliki fokus dan item di dalamnya dipilih dengan d-pad).

android:state_checkable
Boolean. "true" jika item ini harus digunakan bila objek dapat dicentang; "false" jika item ini harus digunakan bila objek tidak dapat dicentang. (Hanya bermanfaat jika objek dapat beralih di antara widget yang dapat dicentang dan yang tidak.)
android:state_checked
Boolean. "true" jika item ini harus digunakan bila objek dicentang; "false" jika item harus digunakan bila objek tidak dicentang.
android:state_enabled
Boolean. "true" jika item harus digunakan bila objek diaktifkan (mampu menerima kejadian klik/sentuhan); "false" jika item harus digunakan bila objek dinonaktifkan.
android:state_activated
Boolean. "true" jika item harus digunakan bila objek diaktifkan sebagai pilihan tetap (misalnya untuk "menyorot" item daftar pilihan sebelumnya dalam tampilan navigasi persisten); "false" jika item harus digunakan bila objek dinonaktifkan.

Diperkenalkan dalam API level 11.

android:state_window_focused
Boolean. "true" jika item ini harus digunakan bila jendela aplikasi memiliki fokus (aplikasi berada di latar depan), "false" jika item harus digunakan bila jendela aplikasi tidak memiliki fokus (misalnya, jika bayangan pemberitahuan ditarik turun atau dialog muncul).

Catatan: Ingat bahwa Android menggunakan daftar status yang sesuai dengan status objek saat ini. Sehingga, item pertama dalam daftar tidak berisi satu pun dari atribut di atas, kemudian diterapkan selalu, karena itu nilai default harus selalu terakhir (seperti yang ditunjukkan dalam contoh berikut).

contoh:
File XML disimpan di res/drawable/button.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

XML layout ini menerapkan sumber daya dapat digambar daftar status pada Tombol:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />
lihat juga:

Daftar Tingkat

Sumber daya dapat digambar yang mengelola angka dari sumber daya dapat digambar alternatif, masing-masing diberikan nilai numerik maksimum. Menyetel nilai tingkat sumber daya dapat digambar dengan setLevel() memuat sumber daya dapat digambar dalam daftar nilai tingkat yang memiliki nilai android:maxLevel lebih besar dari atau sama dengan nilai yang diteruskan ke metode.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke LevelListDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<level-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/drawable_resource"
        android:maxLevel="integer"
        android:minLevel="integer" />
</level-list>
elemen:
<level-list>
Ini harus berupa elemen akar. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
<item>
Mendefinisikan sumber daya dapat digambar yang digunakan di tingkat tertentu.

atribut:

android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar yang disisipkan.
android:maxLevel
Integer. Tingkat maksimum yang diizinkan untuk item ini.
android:minLevel
Integer. Tingkat minimum yang diizinkan untuk item ini.
contoh:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1" />
</level-list>

Setelah ini diterapkan ke View, tingkatnya dapat diubah dengan setLevel() atau setImageLevel().

lihat juga:

Sumber Daya Dapat Digambar untuk Transisi

TransitionDrawable adalah objek dapat digambar yang bisa berjalan secara bersilang antara dua sumber daya dapat digambar.

Setiap sumber daya dapat digambar diwakili oleh satu elemen <item> di dalam satu elemen <transition>. Tidak lebih dari dua item yang didukung. Untuk transisi maju, hubungi startTransition(). Untuk transisi mundur, hubungi reverseTransition().

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke TransitionDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</transition>
elemen:
<transition>
Diperlukan. Ini harus berupa elemen akar. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
<item>
Mendefinisikan sumber daya dapat digambar untuk digunakan sebagai bagian dari transisi yang dapat digambar. Harus anak dari elemen <transition>. Menerima elemen <bitmap> anak.

atribut:

android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar.
android:id
ID Sumber Daya. ID sumber daya unik untuk sumber daya dapat digambar. Dalam membuat ID sumber daya baru untuk item ini, gunakan format: "@+id/name". Simbol plus menunjukkan bahwa hal ini harus dibuat sebagai ID baru. Anda bisa menggunakan identifier ini untuk mengambil dan memodifikasi sumber daya dapat digambar dengan View.findViewById() atau Activity.findViewById().
android:top
Integer. Offset atas dalam piksel.
android:right
Integer. Offset kanan dalam piksel.
android:bottom
Integer. Offset bawah dalam piksel.
android:left
Integer. Offset kiri dalam piksel.
contoh:
File XML disimpan di res/drawable/transition.xml:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/on" />
    <item android:drawable="@drawable/off" />
</transition>

XML layout ini menerapkan sumber daya dapat digambar ke Tampilan:

<ImageButton
    android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition" />

Dan kode berikut ini melakukan transisi 500 md dari item pertama ke item kedua:

ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);
lihat juga:

Sumber Daya Dapat Digambar untuk Sisipan

Sumber daya dapat digambar yang didefinisikan dalam XML yang menyisipkan sumber daya dapat digambar lainnya dengan jarak tertentu. Hal ini bermanfaat saat Tampilan memerlukan latar belakang yang lebih kecil dari ikatan Tampilan sesungguhnya.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke InsetDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:insetTop="dimension"
    android:insetRight="dimension"
    android:insetBottom="dimension"
    android:insetLeft="dimension" />
elemen:
<inset>
Mendefinisikan sumber daya dapat digambar yang berupa sisipan. Ini harus berupa elemen akar.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar yang disisipkan.
android:insetTop
Dimensi. Sisipan atas, sebagai nilai dimensi atau sumber daya dimensi
android:insetRight
Dimensi. Sisipan kanan, sebagai nilai dimensi atau sumber daya dimensi
android:insetBottom
Dimensi. Sisipan bawah, sebagai nilai dimensi atau sumber daya dimensi
android:insetLeft
Dimensi. Sisipan kiri, sebagai nilai dimensi atau sumber daya dimensi
contoh:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/background"
    android:insetTop="10dp"
    android:insetLeft="10dp" />
lihat juga:

Sumber Daya Dapat Digambar untuk Pemotongan

Sumber daya dapat digambar yang didefinisikan dalam XML yang memotong sumber daya dapat digambar lain berdasarkan tingkatnya saat ini. Anda bisa mengontrol seberapa banyak sumber daya dapat digambar anak yang dipotong dengan lebar dan tinggi berdasarkan tingkatnya, serta gravitasi untuk mengontrol lokasinya dalam keseluruhan kontainer. Yang paling sering digunakan untuk mengimplementasikan sesuatu seperti bilah kemajuan.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke ClipDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<clip
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:clipOrientation=["horizontal" | "vertical"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                     "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                     "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
elemen:
<clip>
Mendefinisikan sumber daya dapat digambar untuk pemotongan Ini harus berupa elemen akar.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar yang akan dipotong.
android:clipOrientation
Kata kunci. Orientasi untuk pemotongan.

Harus salah satu dari nilai konstanta berikut ini:

NilaiKeterangan
horizontal Memotong sumber daya dapat digambar secara horizontal.
vertical Memotong sumber daya dapat digambar secara vertikal.
android:gravity
Kata kunci. Menetapkan lokasi dalam sumber daya dapat digambar yang akan dipotong.

Harus satu atau beberapa (yang dipisah tanda '|') dari nilai konstanta berikut:

NilaiKeterangan
top Menempatkan objek di bagian atas kontainernya, tanpa mengubah ukurannya. Bila clipOrientation adalah "vertical", pemotongan akan terjadi di bagian bawah sumber daya dapat digambar.
bottom Menempatkan objek di bagian bawah kontainernya, tanpa mengubah ukurannya. Bila clipOrientation adalah "vertical", pemotongan akan terjadi di bagian atas sumber daya dapat digambar.
left Menempatkan objek di bagian tepi kiri kontainernya, tanpa mengubah ukurannya. Ini adalah default-nya. Bila clipOrientation adalah "horizontal", pemotongan akan terjadi di bagian kanan sumber daya dapat digambar. Ini adalah default-nya.
right Menempatkan objek di bagian tepi kanan kontainernya, tanpa mengubah ukurannya. Bila clipOrientation adalah "horizontal", pemotongan akan terjadi di bagian kiri sumber daya dapat digambar.
center_vertical Menempatkan objek pada bagian tengah horizontal kontainernya, tanpa mengubah ukurannya. Perilaku pemotongan sama seperti bila gravitasi adalah "center".
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya. Bila clipOrientation adalah "vertical", pemotongan tidak akan terjadi karena sumber daya dapat digambar mengisi ruang vertikal (kecuali jika tingkatnya adalah 0, dalam hal ini tidak terlihat).
center_horizontal Menempatkan objek di bagian tengah horizontal kontainernya, tanpa mengubah ukurannya. Perilaku pemotongan sama seperti bila gravitasi adalah "center".
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya. Bila clipOrientation adalah "horizontal", pemotongan tidak akan terjadi karena sumber daya dapat digambar mengisi ruang horizontal (kecuali jika tingkatnya adalah 0, dalam hal ini tidak terlihat).
center Menempatkan objek di sumbu vertikal dan horizontal kontainernya, tanpa mengubah ukurannya. Bila clipOrientation "horizontal", pemotongan tidak akan terjjadi di bagian kanan dan kiri. Bila clipOrientation "vertical", pemotongan tidak akan terjadi di bagian atas dan bawah.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya. Pemotongan tidak terjadi karena sumber daya dapat digambar mengisi ruang horizontal dan vertikal (kecuali jika tingkatnya adalah 0, dalam hal ini tidak terlihat).
clip_vertical Opsi tambahan yang dapat disetel supaya tepi bagian atas dan/atau bawah anak yang dipotongkan ke batas kontainernya. Klip ini berdasarkan gravitasi vertikal: gravitasi atas memotong tepi bagian bawah, gravitasi bawah memotong tepi bagian atas, dan tidak memotong kedua tepinya.
clip_horizontal Opsi tambahan yang dapat disetel supaya tepi bagian kiri dan/atau kanan anak dipotongkan ke batas kontainernya. Klip berdasarkan gravitasi vertikal: gravitasi kiri memotong tepi bagian kanan, gravitasi kanan memotong tepi bagian kiri, dan tidak memotong kedua tepinya.
contoh:
File XML disimpan di res/drawable/clip.xml:
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/android"
    android:clipOrientation="horizontal"
    android:gravity="left" />

Layout XML berikut menerapkan klip yang dapat digambar ke Tampilan:

<ImageView
    android:id="@+id/image"
    android:background="@drawable/clip"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

Kode berikut mendapatkan sumber daya dapat digambar dan meningkatkan jumlah pemotongan untuk berangsur-angsur memunculkan gambar:

ImageView imageview = (ImageView) findViewById(R.id.image);
ClipDrawable drawable = (ClipDrawable) imageview.getDrawable();
drawable.setLevel(drawable.getLevel() + 1000);

Meningkatkan tingkat ini akan mengurangi jumlah pemotongan dan perlahan-lahan memunculkan gambar. Ini pada tingkat 7000:

Catatan: Tingkat default-nya adalah 0, yang sepenuhnya terpotong sehingga gambar tidak terlihat. Bila tingkatnya 10.000, gambar tidak dipotong dan terlihat seluruhnya.

lihat juga:

Sumber Daya Dapat Digambar untuk Skala

Sumber daya dapat digambar yang didefinisikan dalam XML yang mengubah ukuran sumber daya dapat digambar lainnya berdasarkan tingkat saat ini.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke ScaleDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                          "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                          "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:scaleHeight="percentage"
    android:scaleWidth="percentage" />
elemen:
<scale>
Mendefinisikan sumber daya dapat digambar untuk skala. Ini harus berupa elemen akar.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
android:drawable
Sumber daya dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar.
android:scaleGravity
Kata kunci. Menetapkan posisi gravitasi setelah penskalaan.

Harus satu atau beberapa (yang dipisah tanda '|') dari nilai konstanta berikut:

NilaiKeterangan
top Menempatkan objek di bagian atas kontainernya, tanpa mengubah ukurannya.
bottom Menempatkan objek di bagian bawah kontainernya, tanpa mengubah ukurannya.
left Menempatkan objek di bagian tepi kiri kontainernya, tanpa mengubah ukurannya. Ini adalah default-nya.
right Menempatkan objek di bagian tepi kanan kontainernya, tanpa mengubah ukurannya.
center_vertical Menempatkan objek pada bagian tengah horizontal kontainernya, tanpa mengubah ukurannya.
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya.
center_horizontal Menempatkan objek di bagian tengah horizontal kontainernya, tanpa mengubah ukurannya.
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya.
center Menempatkan objek di sumbu vertikal dan horizontal kontainernya, tanpa mengubah ukurannya.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya.
clip_vertical Opsi tambahan yang dapat disetel supaya tepi bagian atas dan/atau bawah anak yang dipotongkan ke batas kontainernya. Klip ini berdasarkan gravitasi vertikal: gravitasi atas memotong tepi bagian bawah, gravitasi bawah memotong tepi bagian atas, dan tidak memotong kedua tepinya.
clip_horizontal Opsi tambahan yang dapat disetel supaya tepi bagian kiri dan/atau kanan anak dipotongkan ke batas kontainernya. Klip berdasarkan gravitasi vertikal: gravitasi kiri memotong tepi bagian kanan, gravitasi kanan memotong tepi bagian kiri, dan tidak memotong kedua tepinya.
android:scaleHeight
Persentase. Ketinggian skala, dinyatakan sebagai persentase dari batas yang dapat digambar. Nilai format adalah XX%. Sebagai contoh: 100%, 12.5%, dll.
android:scaleWidth
Persentase. Lebar skala, dinyatakan sebagai persentase dari batas yang dapat digambar. Nilai format adalah XX%. Sebagai contoh: 100%, 12.5%, dll.
contoh:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/logo"
    android:scaleGravity="center_vertical|center_horizontal"
    android:scaleHeight="80%"
    android:scaleWidth="80%" />
lihat juga:

Sumber Daya Dapat Digambar untuk Bentuk

Ini adalah bentuk umum yang didefinisikan dalam XML.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Penunjuk sumber daya ke GradientDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaks:
<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="float"
        android:centerY="float"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>
elemen:
<shape>
Bentuk dengan sumber daya dapat digambar. Ini harus berupa elemen akar.

atribut:

xmlns:android
String. Diperlukan. Mendefinisikan namespace XML, yang harus berupa "http://schemas.android.com/apk/res/android".
android:shape
Kata kunci. Mendefinisikan jenis bentuk. Nilai yang valid adalah:
NilaiKeterangan
"rectangle" Sebuah persegi panjang yang mengisi Tampilan yang memuatnya. Ini adalah bentuk default.
"oval" Bentuk oval yang sesuai dengan dimensi Tampilan yang memuatnya.
"line" Sebuah garis horizontal yang membentang lebar Tampilan yang memuatnya. Bentuk ini memerlukan elemen <stroke> untuk mendefinisikan lebar garis.
"ring" Bentuk cincin.

Atribut berikut hanya digunakan saat android:shape="ring":

android:innerRadius
Dimensi. Radius untuk bagian dalam cincin (lubang di tengah), sebagai nilai dimensi atau sumber daya dimensi.
android:innerRadiusRatio
Mengambang. Radius untuk bagian dalam cincin, dinyatakan sebagai rasio lebar cincin. Misalnya, jika android:innerRadiusRatio="5", maka radius bagian dalam sama dengan lebar cincin dibagi 5. Nilai ini diganti oleh android:innerRadius. Nilai default-nya adalah 9.
android:thickness
Dimensi. Ketebalan cincin, sebagai nilai dimensi atau sumber daya dimensi.
android:thicknessRatio
Mengambang. Ketebalan cincin, dinyatakan sebagai rasio dari lebar cincin. Misalnya, jika android:thicknessRatio="2", maka ketebalan cincin sama dengan lebar cincin dibagi 2. Nilai ini diganti oleh android:innerRadius. Nilai default-nya adalah 3.
android:useLevel
Boolean. "true" jika digunakan sebagai LevelListDrawable. Biasanya akan menjadi "false" atau bentuk Anda mungkin tidak muncul.
<corners>
Membuat bentuk sudut lengkung. Berlaku hanya bila bentuknya persegi panjang.

atribut:

android:radius
Dimensi. Radius untuk semua sudut, sebagai nilai dimensi atau sumber daya dimensi. Ini mengganti tiap sudut dari atribut berikut.
android:topLeftRadius
Dimensi. Radius untuk sudut kiri atas, sebagai nilai dimensi atau sumber daya dimensi.
android:topRightRadius
Dimensi. Radius untuk sudut kanan atas, sebagai nilai dimensi atau sumber daya dimensi.
android:bottomLeftRadius
Dimensi. Radius untuk sudut kiri bawah, sebagai nilai dimensi atau sumber daya dimensi.
android:bottomRightRadius
Dimensi. Radius untuk sudut kanan bawah, sebagai nilai dimensi atau sumber daya dimensi.

Catatan: Setiap sudut harus (awalnya) disediakan radius sudut lebih besar dari 1, atau sudut tidak melengkung. Jika Anda ingin sudut tertentu agar tidak melengkung, caranya dengan menggunakan android:radius untuk menyetel radius sudut default lebih dari 1, tapi kemudian ganti setiap sudut dengan nilai yang Anda inginkan, dengan memberi nol ("0dp") untuk sudut yang tidak lengkung.

<gradient>
Menetapkan warna gradien untuk bentuk.

atribut:

android:angle
Integer. Sudut untuk gradien, dalam derajat. 0 dari kiri ke kanan, 90 dari bawah ke atas. Harus kelipatan dari 45. Default-nya adalah 0.
android:centerX
Mengambang. Posisi X relatif untuk pusat gradien (0 - 1.0).
android:centerY
Mengambang. Posisi Y relatif untuk pusat gradien (0 - 1.0).
android:centerColor
Warna. Warna opsional yang muncul di antara warna awal dan akhir, setelah nilai heksadesimal atau sumber daya warna.
android:endColor
Warna. Warna akhir, sebagai nilai heksadesimal atau sumber daya warna.
android:gradientRadius
Mengambang. Radius untuk gradien. Hanya diterapkan bila android:type="radial".
android:startColor
Warna. Warna awal, sebagai nilai heksadesimal atau sumber daya warna.
android:type
Kata kunci. Jenis pola gradien yang akan diterapkan. Nilai yang valid adalah:
NilaiKeterangan
"linear" Gradien bergaris. Ini adalah default-nya.
"radial" Gradien radial. Warna awal adalah warna tengah.
"sweep" Gradien garis bentang.
android:useLevel
Boolean. "true" jika digunakan sebagai LevelListDrawable.
<padding>
Padding untuk diterapkan pada elemen Tampilan yang memuatnya (ini menjadi bantalan posisi materi Tampilan, bukan bentuk).

atribut:

android:left
Dimensi. Padding kiri, sebagai nilai dimensi atau sumber daya dimensi.
android:top
Dimensi. Padding atas, sebagai nilai dimensi atau sumber daya dimensi.
android:right
Dimensi. Padding kanan, sebagai nilai dimensi atau sumber daya dimensi.
android:bottom
Dimensi. Padding bawah, sebagai nilai dimensi atau sumber daya dimensi.
<size>
Ukuran bentuk.

atribut:

android:height
Dimensi. Ketinggian bentuk, sebagai nilai dimensi atau sumber daya dimensi.
android:width
Dimensi. Lebar bentuk, sebagai nilai dimensi atau sumber daya dimensi.

Catatan: Skala bentuk terhadap ukuran Tampilan kontainer sesuai dengan dimensi yang didefinisikan di sini, secara default. Bila Anda menggunakan bentuk di ImageView, Anda bisa membatasi penskalaan dengan menyetel android:scaleType ke "center".

<solid>
Warna solid untuk mengisi bentuk.

atribut:

android:color
Warna. Warna yang diterapkan ke bentuk, sebagai nilai heksadesimal atau sumber daya warna.
<stroke>
Garis guratan untuk bentuk.

atribut:

android:width
Dimensi. Ketebalan garis, sebagai nilai dimensi atau sumber daya dimensi.
android:color
Warna. Warna garis, sebagai nilai heksadesimal atau sumber daya warna.
android:dashGap
Dimensi. Jarak antara garis putus-putus, sebagai nilai dimensi atau sumber daya dimensi. Hanya berlaku jika android:dashWidth disetel.
android:dashWidth
Dimensi. Ukuran setiap garis putus-putus, sebagai nilai dimensi atau sumber daya dimensi. Hanya berlaku jika android:dashGap disetel.
contoh:
File XML disimpan di res/drawable/gradient_box.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

Layout XML ini menggunakan sumber daya dapat digambar untuk bentuk ke Tampilan:

<TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

Kode aplikasi ini membuat sumber daya dapat digambar untuk bentuk dan menerapkannya ke Tampilan:

Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);
lihat juga: