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)
- 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>
disusun bertingkat 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 atau 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:
Nilai | Deskripsi |
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:
Nilai | Deskripsi |
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:
Nilai | Deskripsi |
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:
Nilai | Deskripsi |
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, tanpa mengubah 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, tanpa mengubah 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, tanpa mengubah 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:
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:
Nilai | Deskripsi |
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:
Nilai | Keterangan |
"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:
Nilai | Deskripsi |
"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:
-