Resource drawable

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Resource drawable adalah konsep umum untuk grafis yang dapat digambar pada layar dan bisa ditampilkan dengan API seperti getDrawable(int) atau diterapkan ke resource XML lainnya dengan atribut seperti android:drawable dan android:icon. Ada beberapa jenis drawable:

File Bitmap
File grafis bitmap (.png, .webp, .jpg, atau .gif). Membuat BitmapDrawable.
File Nine-Patch
File PNG dengan wilayah yang dapat direntangkan untuk memungkinkan pengubahan ukuran gambar berdasarkan konten (.9.png). Membuat NinePatchDrawable.
Daftar Lapisan
Drawable yang mengelola array Drawable lainnya. Ini digambar dalam urutan array, 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 drawable yang mengelola sejumlah Drawable alternatif, masing-masing disertai nilai numerik maksimum. Membuat LevelListDrawable.
Drawable Transisi
File XML yang menentukan drawable yang bisa memudar bersilang antara dua resource drawable. Membuat TransitionDrawable.
Drawable Inset
File XML yang menentukan drawable yang menyisipkan drawable lainnya dengan jarak yang telah ditentukan. Hal ini bermanfaat saat Tampilan memerlukan drawable latar belakang yang lebih kecil dari ikatan Tampilan sesungguhnya.
Drawable Klip
File XML yang menentukan drawable yang mengklip Drawable lainnya berdasarkan nilai tingkat Drawable ini untuk saat ini. Membuat ClipDrawable.
Drawable Skala
File XML yang menentukan drawable yang mengubah ukuran Drawable lain berdasarkan nilai tingkat saat ini. Membuat ScaleDrawable
Drawable Bentuk
File XML yang menentukan bentuk geometris, termasuk warna dan gradien. Membuat GradientDrawable.

Lihat juga dokumen Resource Animasi untuk cara membuat AnimationDrawable.

Catatan: resource warna juga dapat digunakan sebagai drawable dalam XML. Misalnya, ketika membuat sebuah drawable daftar status, Anda dapat mereferensikan sebuah resource warna untuk atribut android:drawable (android:drawable="@color/green").

Bitmap

Gambar bitmap. Android mendukung file bitmap dalam format berikut: .png (lebih disukai), ,webp (lebih disukai, memerlukan API level 17 atau yang lebih tinggi), .jpg (dapat diterima), .gif (tidak direkomendasikan).

Anda dapat merujuk file bitmap secara langsung, menggunakan nama file sebagai ID resource, atau membuat ID resource alias di XML.

Catatan: File bitmap mungkin dioptimalkan secara otomatis dengan kompresi gambar utuh oleh alat aapt selama proses build. 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 terletak dalam direktori ini dapat berubah selama build. Jika Anda berencana membaca gambar sebagai stream bit untuk mengonversinya ke bitmap, taruh gambar dalam folder res/raw/, tempat gambar tidak akan dioptimalkan.

File bitmap

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

lokasi file:
res/drawable/filename.png (.png, .webp, .jpg, atau .gif)
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke BitmapDrawable.
referensi resource:
Di 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 resource yang ditentukan pada XML yang mengarah pada file bitmap. Dampaknya adalah alias untuk file bitmap raw. XML dapat menentukan properti tambahan untuk bitmap seperti dithering dan pemetakan.

Catatan: Anda bisa menggunakan elemen <bitmap> sebagai turunan dari elemen <item>. Misalnya , ketika membuat daftar status atau daftar lapisan, Anda dapat mengecualikan atribut android:drawable dari elemen <item> dan menyarangkan <bitmap> di dalamnya yang menentukan item drawable.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke BitmapDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android". Ini diperlukan hanya bila <bitmap> adalah elemen root—tidak diperlukan ketika <bitmap> disarangkan di dalam <item>.
android:src
Resource drawable. Wajib. Rujukan pada resource drawable.
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 or menonaktifkan pemfilteran bitmap. Pemfilteran digunakan saat bitmap diciutkan atau dibentangkan untuk memperhalus tampilannya.
android:gravity
Kata kunci. Mendefinisikan gravitasi untuk bitmap. Gravitasi menunjukkan lokasi penempatan drawable dalam container-nya jika bitmap lebih kecil dari container-nya.

Pasti salah satu atau lebih (dipisahkan oleh '|') pada nilai konstanta berikut:

NilaiDeskripsi
top Letakkan objek pada bagian atas container, tanpa mengubah ukurannya.
bottom Letakkan objek pada bagian bawah container, tanpa mengubah ukurannya.
left Letakkan objek pada bagian tepi kiri container-nya, tanpa mengubah ukurannya.
right Letakkan objek pada bagian tepi kanan container-nya, tanpa mengubah ukurannya.
center_vertical Letakkan objek pada tengah vertikal container, tanpa mengubah ukurannya.
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh container-nya.
center_horizontal Letakkan objek pada tengah horizontal container-nya, tanpa mengubah ukurannya.
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya.
center Letakkan objek pada tengah container-nya, tepat pada sumbu vertikal dan horizontal, tanpa mengubah ukurannya.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh container-nya. Ini adalah defaultnya.
clip_vertical Opsi tambahan yang dapat ditetapkan supaya tepian bagian atas dan/atau bawah pada turunan diklip sesuai dengan batas container-nya. Klip ini berdasarkan gravitasi vertikal: gravitasi atas mengklip tepi bagian bawah, gravitasi bawah mengklip tepi bagian atas, dan tidak mengklip kedua tepinya.
clip_horizontal Opsi tambahan yang dapat diatur supaya tepian kanan dan/atau kiri pada turunan diklip menyesuaikan dengan batas container-nya. Klip berdasarkan gravitasi horizontal: gravitasi kiri mengklip tepi bagian kanan, gravitasi kanan mengklip tepi bagian kiri, dan tidak mengklip kedua tepinya.
android:mipMap
Boolean. Mengaktifkan atau menonaktifkan petunjuk mipmap. Lihat setHasMipMap() untuk mengetahui informasi selengkapnya. Nilai defaultnya adalah false (salah).
android:tileMode
Kata kunci. Mendefinisikan mode kotak. Bila mode kotak diaktifkan, bitmap akan diulang. Gravitasi akan diabaikan bila mode kotak diaktifkan.

Harus salah satu dari nilai konstanta berikut ini:

NilaiDeskripsi
disabled Jangan mengotakkan bitmap. Nilai ini merupakan default.
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 isi 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 resource yang ditentukan oleh XML.

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

File Nine-patch

lokasi file:
res/drawable/filename.9.png
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke NinePatchDrawable.
referensi resource:
Di 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 resource 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 resource.
jenis data resource yang dihimpun:
Pointer resource ke NinePatchDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
android:src
Resource drawable. Wajib. 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 Lapisan

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

Masing-masing drawable ditunjukkan dengan elemen <item> di dalam elemen <layer-list> tunggal.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke LayerDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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>
Wajib. Elemen ini harus menjadi elemen root. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
<item>
Menetapkan drawable ke lokasi di drawable lapisan, pada posisi yang ditetapkan dengan atributnya. Harus berupa turunan dari elemen <layer-list>. Menerima elemen <bitmap> turunan.

atribut:

android:drawable
Resource drawable. Wajib. Rujukan pada resource drawable.
android:id
ID Resource. ID resource unik untuk drawable ini. Untuk membuat ID resource baru bagi item ini, gunakan bentuk: "@+id/name". Simbol plus menunjukkan bahwa ID ini harus dibuat sebagai ID baru. Anda dapat menggunakan ID ini untuk mengambil dan memodifikasi drawable dengan View.findViewById() atau Activity.findViewById().
android:top
Dimensi. Offset atas, sebagai nilai dimensi atau resource dimensi.
android:right
Dimensi. Offset kanan, sebagai nilai dimensi atau resource dimensi.
android:bottom
Dimensi. Offset bawah, sebagai nilai dimensi atau resource dimensi.
android:left
Dimensi. Offset kiri, sebagai nilai dimensi atau resource dimensi.

Semua item drawable diskalakan agar sesuai dengan ukuran Tampilan yang menampungnya, secara default. Oleh karena itu, menempatkan gambar pada daftar lapisan 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 drawable dan menetapkan gravitasi dengan sesuatu yang skalanya tetap, misalnya "center". Misalnya, <item> berikut menentukan sebuah item yang di skalakan agar masuk ke Tampilan container-nya:

<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 yang 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> yang disusun bertingkat untuk menentukan resource drawable untuk setiap item dengan gravitasi "pusat". Untuk memastikan bahwa tidak satupun gambar diskalakan untuk sesuai dengan ukuran container, dikarenakan pengubahan ukuran yang terjadi oleh gambar offset.

XML tata letak ini menerapkan drawable 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 drawable yang ditentukan pada XML menggunakan beberapa gambar berbeda untuk menampilkan grafis yang sama, bergantung pada status objek. Misalnya, sebuah widget Button bisa muncul di satu atau beberapa status berbeda (ditekan, difokuskan, atau tidak keduanya) dan, menggunakan drawable daftar status, Anda dapat menyediakan gambar latar yang berbeda untuk masing-masing status.

Anda dapat mendeskripsikan daftar status dalam 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 drawable.

Pada setiap perubahan status, daftar status akan ditelusuri dari atas ke bawah, dan item pertama yang cocok dengan status saat ini akan digunakan—pilihannya tidak didasarkan pada “kecocokan terbaik”, tetapi cukup item pertama yang memenuhi kriteria minimum status.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke StateListDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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>
Wajib. Elemen ini harus menjadi elemen root. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
android:constantSize
Boolean. "true" jika ukuran internal drawable yang dilaporkan tetap konstan saat status berubah (ukurannya maksimum untuk semua status); "false" jika ukurannya bervariasi berdasarkan status saat ini. Defaultnya adalah false (salah).
android:dither
Boolean. "true" untuk mengaktifkan dithering pada bitmap jika bitmap tidak memiliki konfigurasi piksel yang sama dengan layar (misalnya, bitmap ARGB 8888 dengan layar RGB 565); "false" untuk menonaktifkan dithering. Defaultnya adalah true (benar).
android:variablePadding
Boolean. "true" jika padding dari drawable 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 tata letak saat status berubah, yang sering kali tidak didukung. Defaultnya adalah false (salah).
<item>
Mendefinisikan drawable yang akan digunakan selama status tertentu, seperti yang dijelaskan oleh atributnya. Harus merupakan turunan dari elemen <selector>.

atribut:

android:drawable
Resource drawable. Wajib. Rujukan pada resource drawable.
android:state_pressed
Boolean. "true" jika item ini harus digunakan saat objek ditekan (misalnya saat tombol disentuh/diklik); "false" jika item ini harus digunakan dalam status default tidak ditekan.
android:state_focused
Boolean. "true" jika item ini harus digunakan saat objek memiliki fokus input (seperti saat pengguna memilih input teks); "false" jika item ini harus digunakan dalam status tidak difokuskan.
android:state_hovered
Boolean. "true" jika item ini harus digunakan saat objek sedang diarahkan oleh kursor; "false" jika item ini harus digunakan dalam status default, tanpa kursor. Sering kali, drawable ini mungkin berupa drawable yang sama dengan yang digunakan untuk status "fokus".

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 saat objek dapat dicentang; "false" jika item ini harus digunakan saat objek tidak dapat dicentang. (Hanya berguna jika objek dapat beralih antara widget yang dapat dicentang dan yang tidak dapat dicentang.)
android:state_checked
Boolean. "true" jika item ini harus digunakan saat objek dicentang; "false" jika harus digunakan saat objek tidak dicentang.
android:state_enabled
Boolean. "true" jika item ini harus digunakan saat objek diaktifkan (mampu menerima peristiwa sentuh/klik); "false" jika harus digunakan saat objek dinonaktifkan.
android:state_activated
Boolean. "true" jika item ini harus digunakan saat objek diaktifkan sebagai pilihan persisten (seperti untuk "menyorot" item daftar yang dipilih sebelumnya dalam tampilan navigasi persisten); "false" jika atribut harus digunakan saat objek tidak diaktifkan.

Diperkenalkan dalam API level 11.

android:state_window_focused
Boolean. "true" jika item ini harus digunakan saat jendela aplikasi sedang difokuskan (aplikasi berada di latar depan), "false" jika item ini harus digunakan saat jendela aplikasi sedang tidak difokuskan (misalnya jika menu notifikasi ditarik ke bawah atau dialog muncul).

Catatan: Ingat bahwa Android menerapkan item pertama dalam 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 yang 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 tata letak ini menerapkan drawable daftar status untuk Tombol:

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

Daftar tingkat

Drawable yang mengelola sejumlah Drawable alternatif, masing-masing diberikan nilai numerik maksimum. Menyetel nilai tingkat drawable dengan setLevel() memuat resource drawable 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 resource.
jenis data resource yang dihimpun:
Pointer resource ke LevelListDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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>
Elemen ini harus menjadi elemen root. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
<item>
Menentukan drawable yang digunakan di tingkat tertentu.

atribut:

android:drawable
Resource drawable. Wajib. Merujuk ke resource drawable yang akan di-inset.
android:maxLevel
Bilangan bulat. Tingkat maksimum yang diizinkan untuk item ini.
android:minLevel
Bilangan bulat. 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:

Drawable transisi

TransitionDrawable adalah objek drawable yang bisa berjalan secara memudar bersilang antara dua resource drawable.

Masing-masing drawable 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 resource.
jenis data resource yang dihimpun:
Pointer resource ke TransitionDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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>
Wajib. Elemen ini harus menjadi elemen root. Berisi satu atau beberapa elemen <item>.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
<item>
Tentukan drawable untuk digunakan sebagai bagian dari transisi drawable. Harus berupa turunan dari elemen <transition>. Menerima elemen <bitmap> turunan.

atribut:

android:drawable
Resource drawable. Wajib. Rujukan pada resource drawable.
android:id
ID Resource. ID resource unik untuk drawable ini. Untuk membuat ID resource baru bagi item ini, gunakan bentuk: "@+id/name". Simbol plus menunjukkan bahwa ID ini harus dibuat sebagai ID baru. Anda dapat menggunakan ID ini untuk mengambil dan memodifikasi drawable dengan View.findViewById() atau Activity.findViewById().
android:top
Bilangan bulat. Offset atas pada piksel.
android:right
Bilangan bulat. Offset kanan pada piksel.
android:bottom
Bilangan bulat. Offset bawah pada piksel.
android:left
Bilangan bulat. Offset kiri pada piksel.
contoh:
File XML yang 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 tata letak ini menerapkan drawable 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:

Drawable inset

Drawable yang didefinisikan dalam XML yang menyisipkan drawable 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 resource.
jenis data resource yang dihimpun:
Pointer resource ke InsetDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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 drawable inset. Elemen ini harus menjadi elemen root.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
android:drawable
Resource drawable. Wajib. Merujuk ke resource drawable yang akan di-inset.
android:insetTop
Dimensi. Inset atas, sebagai nilai dimensi atau resource dimensi
android:insetRight
Dimensi. Inset kanan, sebagai nilai dimensi atau resource dimensi
android:insetBottom
Dimensi. Inset bawah, sebagai nilai dimensi atau resource dimensi
android:insetLeft
Dimensi. Inset kiri, sebagai nilai dimensi atau resource 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:

Drawable klip

Drawable yang ditentukan dalam XML yang mengklip drawable lain berdasarkan tingkat Drawable ini untuk saat ini. Anda dapat mengontrol seberapa banyak drawable turunan yang diklip dengan lebar dan tinggi berdasarkan tingkatnya, serta gravitasi untuk mengontrol lokasinya dalam keseluruhan container. Yang paling sering digunakan untuk menjalankan sesuatu seperti status progres.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke ClipDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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 drawable klip. Elemen ini harus menjadi elemen root.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
android:drawable
Resource drawable. Wajib. Merujuk ke resource drawable yang akan diklip.
android:clipOrientation
Kata kunci. Orientasi untuk klip.

Harus salah satu dari nilai konstanta berikut ini:

NilaiDeskripsi
horizontal Mengklip drawable secara horizontal.
vertical Mengklip drawable secara vertikal.
android:gravity
Kata kunci. Menentukan lokasi drawable yang akan diklip.

Pasti salah satu atau lebih (dipisahkan oleh '|') pada nilai konstanta berikut:

NilaiDeskripsi
top Letakkan objek pada bagian atas container, tanpa mengubah ukurannya. Bila clipOrientation adalah "vertical", pengeklipan akan terjadi di bagian bawah drawable.
bottom Letakkan objek pada bagian bawah container, jangan ubah ukurannya. Bila clipOrientation adalah "vertical", pengeklipan akan terjadi di bagian atas drawable.
left Letakkan objek pada bagian tepi kiri container-nya, tanpa mengubah ukurannya. Ini adalah defaultnya. Bila clipOrientation adalah "horizontal", pengeklipan akan terjadi di bagian kanan drawable. Ini adalah defaultnya.
right Letakkan objek pada bagian tepi kanan container-nya, tanpa mengubah ukurannya. Bila clipOrientation adalah "horizontal", pengeklipan akan terjadi di bagian kiri drawable.
center_vertical Letakkan objek pada tengah vertikal pada container, jangan ubah ukurannya. Pengeklipan berfungsi seperti bila gravitasi adalah "center".
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh container-nya. Bila clipOrientation adalah "vertical", pengeklipan tidak akan terjadi karena drawable mengisi ruang vertikal (kecuali jika tingkatnya adalah 0, dalam hal ini tidak terlihat).
center_horizontal Letakkan objek pada tengah horizontal container-nya, jangan ubah ukurannya. Pengeklipan berfungsi seperti bila gravitasi adalah "center".
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh container-nya. Bila clipOrientation adalah "horizontal", pengeklipan tidak akan terjadi karena drawable mengisi ruang horizontal (kecuali jika tingkatnya adalah 0, dalam hal ini tidak terlihat).
center Letakkan objek pada tengah container-nya, tepat pada sumbu vertikal dan horizontal, tanpa mengubah ukurannya. Bila clipOrientation adalah "horizontal", pengeklipan tidak akan terjadi di bagian kanan dan kiri. Bila clipOrientation adalah "vertical", pengeklipan tidak akan terjadi di bagian atas dan bawah.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh container-nya. Pengeklipan tidak terjadi karena drawable mengisi ruang horizontal dan vertikal (kecuali jika tingkat drawable-nya adalah 0, dalam hal ini tidak terlihat).
clip_vertical Opsi tambahan yang dapat ditetapkan supaya tepian bagian atas dan/atau bawah pada turunan diklip sesuai dengan batas container-nya. Klip ini berdasarkan gravitasi vertikal: gravitasi atas mengklip tepi bagian bawah, gravitasi bawah mengklip tepi bagian atas, dan tidak mengklip kedua tepinya.
clip_horizontal Opsi tambahan yang dapat diatur supaya tepian kanan dan/atau kiri pada turunan diklip menyesuaikan dengan batas container-nya. Klip berdasarkan gravitasi horizontal: gravitasi kiri mengklip tepi bagian kanan, gravitasi kanan mengklip tepi bagian kiri, dan tidak mengklip kedua tepinya.
contoh:
File XML yang 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" />

XML tata letak berikut menerapkan klip drawable ke Tampilan:

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

Kode berikut mendapatkan drawable 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 level ini akan mengurangi jumlah klip dan perlahan-lahan memunculkan gambar. Ini pada tingkat 7000 7000:

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

lihat juga:

Drawable skala

Drawable yang didefinisikan dalam XML yang mengubah ukuran drawable lainnya berdasarkan tingkat saat ini.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke ScaleDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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 drawable skala. Elemen ini harus menjadi elemen root.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
android:drawable
Resource drawable. Wajib. Rujukan pada resource drawable.
android:scaleGravity
Kata kunci. Menentukan posisi gravitasi setelah penskalaan.

Pasti salah satu atau lebih (dipisahkan oleh '|') pada nilai konstanta berikut:

NilaiDeskripsi
top Letakkan objek pada bagian atas container, tanpa mengubah ukurannya.
bottom Letakkan objek pada bagian bawah container, tanpa mengubah ukurannya.
left Letakkan objek pada bagian tepi kiri container-nya, tanpa mengubah ukurannya. Ini adalah defaultnya.
right Letakkan objek pada bagian tepi kanan container-nya, tanpa mengubah ukurannya.
center_vertical Letakkan objek pada tengah vertikal container, tanpa mengubah ukurannya.
fill_vertical Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh container-nya.
center_horizontal Letakkan objek pada tengah horizontal container-nya, tanpa mengubah ukurannya.
fill_horizontal Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya.
center Letakkan objek pada tengah container-nya, tepat pada sumbu vertikal dan horizontal, tanpa mengubah ukurannya.
fill Memperbesar ukuran horizontal dan vertikal objek jika diperlukan sehingga mengisi seluruh container-nya.
clip_vertical Opsi tambahan yang dapat ditetapkan supaya tepian bagian atas dan/atau bawah pada turunan diklip sesuai dengan batas container-nya. Klip ini berdasarkan gravitasi vertikal: gravitasi atas mengklip tepi bagian bawah, gravitasi bawah mengklip tepi bagian atas, dan tidak mengklip kedua tepinya.
clip_horizontal Opsi tambahan yang dapat diatur supaya tepian kanan dan/atau kiri pada turunan diklip menyesuaikan dengan batas container-nya. Klip berdasarkan gravitasi horizontal: gravitasi kiri mengklip tepi bagian kanan, gravitasi kanan mengklip tepi bagian kiri, dan tidak mengklip kedua tepinya.
android:scaleHeight
Persentase. Ketinggian skala, dinyatakan sebagai persentase dari batas drawable. Format nilai adalah XX%. Misalnya: 100%, 12,5%, dll.
android:scaleWidth
Persentase. Lebar skala, dinyatakan sebagai persentase dari batas drawable. Format nilai adalah XX%. Misalnya: 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:

Drawable bentuk

Ini adalah bentuk umum yang didefinisikan dalam XML.

lokasi file:
res/drawable/filename.xml
Nama file digunakan sebagai ID resource.
jenis data resource yang dihimpun:
Pointer resource ke GradientDrawable.
referensi resource:
Di Java: R.drawable.filename
Dalam XML: @[package:]drawable/filename
sintaksis:
<?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>
Drawable bentuk. Elemen ini harus menjadi elemen root.

atribut:

xmlns:android
String. Wajib. Menentukan namespace XML, yang harus ditetapkan seperti berikut "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 defaultnya.
"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 resource dimensi.
android:innerRadiusRatio
Float. Radius untuk bagian dalam cincin, dinyatakan sebagai rasio lebar cincin. Misalnya, jika android:innerRadiusRatio="5", radius 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 resource dimensi.
android:thicknessRatio
Float. 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. Ini biasanya harus berupa "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 resource dimensi. Ini mengganti tiap sudut dari atribut berikut.
android:topLeftRadius
Dimensi. Radius untuk sudut kiri atas, sebagai nilai dimensi atau resource dimensi.
android:topRightRadius
Dimensi. Radius untuk sudut kanan atas, sebagai nilai dimensi atau resource dimensi.
android:bottomLeftRadius
Dimensi. Radius untuk sudut kiri bawah, sebagai nilai dimensi atau resource dimensi.
android:bottomRightRadius
Dimensi. Radius untuk sudut kanan bawah, sebagai nilai dimensi atau resource 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
Bilangan bulat. Sudut untuk gradien, dalam derajat. 0 dari kiri ke kanan, 90 dari bawah ke atas. Harus kelipatan dari 45. Defaultnya adalah 0.
android:centerX
Float. Posisi X relatif untuk pusat gradien (0 - 1.0).
android:centerY
Float. 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 resource warna.
android:endColor
Warna. Warna akhir, sebagai nilai heksadesimal atau resource warna.
android:gradientRadius
Float. Radius untuk gradien. Hanya diterapkan bila android:type="radial".
android:startColor
Warna. Warna awal, sebagai nilai heksadesimal atau resource warna.
android:type
Kata kunci. Jenis pola gradien yang akan diterapkan. Nilai yang valid adalah:
NilaiDeskripsi
"linear" Gradien linear. 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 pad untuk posisi konten Tampilan, bukan bentuk).

atribut:

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

atribut:

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

Catatan: Skala bentuk terhadap ukuran Tampilan container sesuai dengan dimensi yang didefinisikan di sini, secara default. Bila Anda menggunakan bentuk di ImageView, Anda dapat 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 resource warna.
<stroke>
Garis guratan untuk bentuk.

atribut:

android:width
Dimensi. Ketebalan garis, sebagai nilai dimensi atau resource dimensi.
android:color
Warna. Warna garis, sebagai nilai heksadesimal atau resource warna.
android:dashGap
Dimensi. Jarak antara garis putus-putus, sebagai nilai dimensi atau resource dimensi. Hanya berlaku jika android:dashWidth disetel.
android:dashWidth
Dimensi. Ukuran setiap garis putus-putus, sebagai nilai dimensi atau resource dimensi. Hanya berlaku jika android:dashGap disetel.
contoh:
File XML yang 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>

XML tata letak ini menggunakan drawable bentuk ke Tampilan:

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

Kode aplikasi ini membuat drawable 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: