Pratinjau Developer Android 11 kedua kini tersedia, uji dan sampaikan masukan Anda.

Sumber daya yang dapat digambar

Sumber daya dapat digambar adalah konsep umum untuk grafis 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. Ada beberapa jenis sumber daya dapat digambar:

File Bitmap
File grafis bitmap (.png, .jpg, atau .gif). Membuat BitmapDrawable.
File Nine-Patch
File PNG dengan area 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 menentukan 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 menentukan 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 menentukan bahwa dapat digambar yang menyisipkan sumber daya dapat digambar lainnya dengan jarak yang telah ditentukan. Hal ini bermanfaat saat Tampilan memerlukan latar belakang dapat digambar yang lebih kecil dari ikatan Tampilan sesungguhnya.
Sumber Daya Dapat Digambar untuk Klip
File XML yang menentukan sumber daya dapat digambar yang mengklip sumber daya Dapat Digambar lainnya berdasarkan nilai tingkat saat ini. Membuat ClipDrawable.
Sumber Daya Dapat Digambar untuk Skala
File XML yang menentukan 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 menentukan bentuk geometris, termasuk warna dan gradien. Membuat GradientDrawable.

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, ketika membuat sebuah daftar status sumber daya dapat digambar, Anda dapat 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 dapat 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 utuh oleh alat aapt selama proses membangun. 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. Perhatikan bahwa biner gambar yang berada dalam direktori dapat mengubah 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:
Pointer sumber daya ke BitmapDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
contoh:
Dengan gambar disimpan pada res/drawable/myimage.png, XML tata letak ini menerapkan gambar ke Tampilan:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" />

Kode aplikasi berikut mengambil gambar sebagai Drawable:

Kotlin

val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)

Java

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

Bitmap XML

Bitmap XML adalah sumber daya yang ditentukan 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, ketika menciptakan daftar status atau daftar layer, Anda dapat mengecualikan android:drawable atribut dari elemen <item> dan menyarangkan <bitmap> di dalamnya yang menentukan item yang dapat digambar.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Pointer 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 yang 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 bagian tengah horizontal kontainernya, tanpa mengubah ukurannya.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya. Ini adalah defaultnya.
clip_vertical Opsi tambahan yang dapat disetel supaya tepi bagian atas dan/atau bawah anak yang diklipkan 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 diklipkan 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 defaultnya 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 defaultnya.
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 menentukan area yang dapat direntangkan yang diskalakan Android ketika materi dalam Tampilan melebihi batas gambar normal. Anda biasanya 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 dapat merujuk file Nine-Patch secara langsung dari sumber daya yang ditentukan oleh XML.

Untuk pembahasan lengkap mengenai cara membuat file Nine-patch dengan area yang dapat direntangkan, lihat dokumen Grafis 2D.

File Nine-patch

lokasi file:
res/drawable/filename.9.png
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Pointer sumber daya ke NinePatchDrawable.
referensi sumber daya:
Dalam Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
contoh:
Dengan gambar disimpan pada res/drawable/myninepatch.9.png, XML tata letak 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:
Pointer 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>
Menentukan 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 yang 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 yang dapat digambar yang mengelola serangkaian sumber daya lain yang dapat digambar. 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.

Masing-masing sumber daya dapat digambar ditunjukkan dengan elemen <item> di dalam elemen <layer-list> tunggal.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Pointer 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 dalam layer yang dapat digambar, pada posisi yang didefinisikan oleh atributnya. Harus anak dari elemen <layer-list>. Menerima elemen <bitmap> anak.

atribut:

android:drawable
Sumber daya yang 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 dapat 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 menentukan sumber daya dapat digambar dan mendefinisikan gravitasi dengan sesuatu yang skalanya tetap, misalnya "center". Misalnya, <item> berikut menentukan 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 menentukan 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 yang 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 ditentukan pada XML menggunakan beberapa gambar berbeda untuk merepresentasikan grafis yang sama, bergantung pada status objek. Misalnya, sebuah widget Button bisa muncul di satu atau beberapa status berbeda (ditekan, terfokus, atau tidak keduanya) dan, menggunakan daftar status sumber daya dapat digambar, Anda dapat menyediakan gambar latar belakang yang berbeda untuk masing-masing status.

Anda dapat menjelaskan daftar status pada file XML. Setiap grafis ditunjukkan dengan elemen <item> di dalam elemen <selector> tunggal. Setiap <item> menggunakan berbagai atribut untuk menjelaskan status yang harus digunakan sebagai grafis 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 didasarkan 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:
Pointer 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. Defaultnya 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. Defaultnya 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. Defaultnya 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 yang 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 saat 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 ketika menavigasi dengan kontrol arah (seperti saat menavigasikan melalui daftar dengan d-pad); "false" jika item ini harus digunakan bila objek tidak dipilih.

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 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 peristiwa sentuhan/klik); "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 daftar status sumber daya dapat digambar untuk 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 sejumlah 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:
Pointer 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 yang 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.

Masing-masing sumber daya dapat digambar ditunjukkan dengan elemen <item> di dalam elemen <transition> tunggal. Tidak lebih dari dua item yang didukung. Untuk transisi maju, panggil startTransition(). Untuk transisi mundur, panggil reverseTransition().

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Pointer 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>
Tentukan yang 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 yang 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 dapat 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 yang 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 menunjukkan transisi 500ms dari item pertama ke yang kedua:

Kotlin

val button: ImageButton = findViewById(R.id.button)
val drawable: Drawable = button.drawable
if (drawable is TransitionDrawable) {
    drawable.startTransition(500)
}

Java

ImageButton button = (ImageButton) findViewById(R.id.button);
Drawable drawable = button.getDrawable();
if (drawable instanceof TransitionDrawable) {
    ((TransitionDrawable) 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:
Pointer 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>
Menentukan yang dapat digambar 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 yang 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 klip

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

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID sumber daya.
jenis data sumber daya yang dikompilasi:
Pointer 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 yang mengklip 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 yang dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar yang diklip.
android:clipOrientation
Kata kunci. Orientasi untuk klip.

Harus salah satu dari nilai konstanta berikut ini:

NilaiKeterangan
horizontal Mengklip sumber daya dapat digambar secara horizontal.
vertical Mengklip sumber daya dapat digambar secara vertikal.
android:gravity
Kata kunci. Menentukan lokasi dalam sumber daya dapat digambar yang akan diklip.

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", pengeklipan akan terjadi di bagian bawah sumber daya dapat digambar.
bottom Menempatkan objek di bagian bawah kontainernya, tanpa mengubah ukurannya. Bila clipOrientation adalah "vertical", pengeklipan akan terjadi di bagian atas sumber daya dapat digambar.
left Menempatkan objek di bagian tepi kiri kontainernya, tanpa mengubah ukurannya. Ini adalah defaultnya. Bila clipOrientation adalah "horizontal", pengeklipan akan terjadi di bagian kanan sumber daya dapat digambar. Ini adalah defaultnya.
right Menempatkan objek di bagian tepi kanan kontainernya, tanpa mengubah ukurannya. Bila clipOrientation adalah "horizontal", pengeklipan akan terjadi di bagian kiri sumber daya dapat digambar.
center_vertical Menempatkan objek pada bagian tengah horizontal kontainernya, tanpa mengubah ukurannya. Pengeklipan berfungsi seperti bila gravitasi adalah "center".
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya. Bila clipOrientation adalah "vertical", pengeklipan 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. Pengeklipan berfungsi seperti bila gravitasi adalah "center".
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya. Bila clipOrientation adalah "horizontal", pengeklipan 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 bagian tengah horizontal kontainernya, tanpa mengubah ukurannya. Bila clipOrientation "horizontal", pengeklipan tidak akan terjjadi di bagian kanan dan kiri. Bila clipOrientation "vertical", pengeklipan tidak akan terjadi di bagian atas dan bawah.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh kontainernya. Pengeklipan 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 diklipkan 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 diklipkan 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" />

Tata letak 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 klip untuk berangsur-angsur memunculkan gambar:

Kotlin

val imageview: ImageView = findViewById(R.id.image)
val drawable: Drawable = imageview.background
if (drawable is ClipDrawable) {
    drawable.level = drawable.level + 1000
}

Java

ImageView imageview = (ImageView) findViewById(R.id.image);
Drawable drawable = imageview.getBackground();
if (drawable instanceof CLipDrawable) {
    ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000);
}

Meningkatkan tingkat ini akan mengurangi jumlah klip 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 diklip 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:
Pointer 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 yang dapat digambar. Diperlukan. Merujuk ke sumber daya dapat digambar.
android:scaleGravity
Kata kunci. Menentukan 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 defaultnya.
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 bagian tengah 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 diklipkan 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 diklipkan 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:
Pointer 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 defaultnya 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 defaultnya 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>
Menentukan 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. Defaultnya 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 defaultnya.
"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 konten 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 dapat membatasi penskalaan dengan menyetel android:scaleType hingga "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:

Kotlin

val shape: Drawable? = getDrawable(resources, R.drawable.gradient_box, getTheme())

val tv: TextView = findViewById(R.id.textview)
tv.background = shape

Java

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

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