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 gambar diubah ukurannya berdasarkan konten (
.9.png
). Membuat NinePatchDrawable
.
- Daftar lapisan
- Drawable yang mengelola array drawable lainnya. Drawable ini digambar dalam urutan array, sehingga
elemen dengan indeks terbesar digambar 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 diketuk.
Membuat
StateListDrawable
.
- Daftar level
- 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
.
Untuk mengetahui informasi tentang cara
membuat AnimationDrawable
,
lihat dokumen Resource animasi.
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 level API 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 asli yang tidak memerlukan lebih dari 256 warna dapat dikonversi menjadi PNG 8 bit
dengan palet warna. Cara ini akan menghasilkan gambar dengan kualitas setara yang membutuhkan lebih sedikit
memori.
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 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 filenya adalah 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 adalah 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>
- Wajib. Mendefinisikan sumber bitmap dan propertinya.
Atribut:
xmlns:android
- String. Menentukan namespace XML, yang harus ditetapkan seperti berikut
"http://schemas.android.com/apk/res/android"
. Hal ini diperlukan hanya jika
<bitmap>
merupakan elemen root. Hal ini tidak diperlukan saat
<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, seperti bitmap ARGB 8888 pada 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.
Harus berupa satu atau beberapa nilai konstanta berikut, yang dipisahkan dengan |
:
Nilai | Deskripsi |
top |
Meletakkan objek pada bagian atas container, tanpa mengubah ukurannya. |
bottom |
Meletakkan objek pada bagian bawah container, tanpa mengubah ukurannya. |
left |
Meletakkan objek pada bagian tepi kiri container-nya, tanpa mengubah ukurannya. |
right |
Meletakkan objek pada bagian tepi kanan container-nya, tanpa mengubah ukurannya. |
center_vertical |
Meletakkan objek pada bagian tengah vertikal container-nya, tanpa mengubah ukurannya. |
fill_vertical |
Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh container-nya. |
center_horizontal |
Meletakkan objek pada tengah horizontal container-nya, tanpa mengubah ukurannya. |
fill_horizontal |
Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya.
|
center |
Meletakkan 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. Baca
setHasMipMap()
untuk mengetahui informasi selengkapnya.
Nilai defaultnya adalah false.
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"
.
Saat tampilan diperluas untuk mengakomodasi konten, gambar nine-patch
juga diskalakan agar sesuai dengan ukuran tampilan. 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 area
yang dapat direntangkan, lihat Membuat bitmap yang dapat diubah ukurannya (file 9-patch).
File Nine-patch
- lokasi file:
res/drawable/filename.9.png
Nama file adalah 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 adalah 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>
- Wajib. 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, seperti bitmap ARGB 8888 pada 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. Drawable terakhir dalam daftar 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 adalah 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 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>
Contoh ini menggunakan elemen <bitmap>
yang disusun bertingkat untuk menentukan resource
drawable untuk setiap item dengan gravitasi "center"
. 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 untuk menampilkan grafis yang sama, bergantung pada status
objek. Misalnya, status widget Button
dapat diketuk, difokuskan,
atau tidak keduanya. Dengan menggunakan drawable daftar status, Anda dapat memberikan gambar latar yang berbeda untuk setiap
status.
Anda bisa menjelaskan daftar keadaan dalam file XML. Setiap grafis ditunjukkan dengan elemen <item>
di dalam elemen <selector>
tunggal. Setiap <item>
menggunakan berbagai atribut untuk menjelaskan status tempatnya 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 item pertama yang memenuhi kriteria minimum status.
- lokasi file:
res/drawable/filename.xml
Nama file adalah 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. Benar jika ukuran internal drawable yang dilaporkan tetap konstan saat status
berubah (ukuran maksimum untuk semua status); salah jika ukurannya bervariasi berdasarkan
status saat ini. Default-nya adalah salah.
android:dither
- Boolean. Benar untuk mengaktifkan dithering pada bitmap jika bitmap tidak memiliki konfigurasi piksel
yang sama dengan layar, seperti bitmap ARGB 8888 pada layar RGB 565; salah untuk
menonaktifkan dithering. Nilai defaultnya adalah benar (true).
android:variablePadding
- Boolean. Benar jika padding drawable berubah berdasarkan status
saat ini yang dipilih; salah 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. Default-nya adalah 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. Benar jika item ini digunakan saat objek diketuk, seperti saat tombol
disentuh; salah jika item ini digunakan dalam status default, tidak diketuk.
android:state_focused
- Boolean. Benar jika item ini digunakan saat objek memiliki fokus input,
seperti saat pengguna memilih input teks; salah jika item ini digunakan dalam status default,
tidak difokuskan.
android:state_hovered
- Boolean. Benar jika item ini digunakan saat kursor diarahkan ke objek;
salah jika item ini digunakan dalam status default, tanpa kursor. Sering kali,
drawable ini dapat berupa drawable yang sama dengan yang digunakan untuk status "fokus".
Diperkenalkan dalam level API 14.
android:state_selected
- Boolean. Benar jika item ini digunakan saat objek adalah pilihan
pengguna saat ini ketika menavigasi dengan kontrol arah, seperti saat menavigasi daftar
dengan D-pad; salah jika item ini digunakan saat objek tidak dipilih.
Status yang dipilih digunakan jika android:state_focused
tidak mencukupi,
seperti saat tampilan daftar memiliki fokus dan item di dalamnya dipilih dengan D-pad.
android:state_checkable
- Boolean. Benar jika item ini digunakan saat objek dapat dipilih; salah jika item ini digunakan saat objek tidak dapat dipilih. Hanya berguna jika objek dapat
beralih antara widget yang dapat dipilih dan yang tidak dapat dipilih.
android:state_checked
- Boolean. Benar jika item ini digunakan saat objek dipilih; salah jika digunakan saat objek dibatalkan pilihannya.
android:state_enabled
- Boolean. Benar jika item ini digunakan saat objek diaktifkan,
yang berarti mampu menerima peristiwa sentuh atau klik; salah jika digunakan saat objek
dinonaktifkan.
android:state_activated
- Boolean. Benar jika item ini digunakan saat objek diaktifkan sebagai
pilihan persisten, seperti untuk "menyorot" item daftar yang dipilih sebelumnya dalam tampilan
navigasi persisten; salah jika digunakan saat objek tidak diaktifkan.
Diperkenalkan dalam level API 11.
android:state_window_focused
- Boolean. Benar jika item ini digunakan saat jendela aplikasi sedang difokuskan, artinya
aplikasi berada di latar depan; salah jika item ini digunakan saat jendela
aplikasi tidak sedang difokuskan, misalnya, jika menu notifikasi ditarik ke bawah atau dialog muncul.
Catatan: Android menerapkan item pertama dalam daftar status
yang sesuai dengan status objek saat ini. Jadi, jika item pertama dalam daftar
tidak berisi atribut status sebelumnya, item tersebut akan diterapkan setiap saat. Inilah sebabnya Anda ingin
nilai default selalu menjadi yang terakhir, seperti 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 level
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 adalah 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>
- 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>
- 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 lainnya.
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 adalah 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 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 dalam piksel.
android:right
- Bilangan bulat. Offset kanan dalam piksel.
android:bottom
- Bilangan bulat. Offset bawah dalam piksel.
android:left
- Bilangan bulat. Offset kiri dalam 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 500 md 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 adalah 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>
- Wajib. Menentukan yang dapat digambar sisipan. 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 adalah 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>
- Wajib. 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.
Harus berupa satu atau beberapa nilai konstanta berikut, yang dipisahkan dengan |
:
Nilai | Deskripsi |
top |
Meletakkan objek pada bagian atas container, tanpa mengubah ukurannya. Bila clipOrientation adalah "vertical" , pengeklipan akan terjadi di bagian bawah drawable. |
bottom |
Meletakkan objek pada bagian bawah container, tanpa mengubah ukurannya. Bila clipOrientation adalah "vertical" , pengeklipan akan terjadi di bagian atas drawable. |
left |
Meletakkan objek pada bagian tepi kiri container-nya, tanpa mengubah ukurannya. Ini adalah
defaultnya. Bila clipOrientation adalah "horizontal" , pengeklipan akan terjadi di bagian kanan
drawable. |
right |
Meletakkan objek pada bagian tepi kanan container-nya, tanpa mengubah ukurannya. Bila clipOrientation adalah "horizontal" , pengeklipan akan terjadi di bagian kiri
drawable. |
center_vertical |
Meletakkan objek pada bagian tengah vertikal container-nya, 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 |
Meletakkan objek pada bagian 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 |
Meletakkan 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. Jika 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 adalah 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>
- Wajib. 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.
Harus berupa satu atau beberapa nilai konstanta berikut, yang dipisahkan dengan |
:
Nilai | Deskripsi |
top |
Meletakkan objek pada bagian atas container, tanpa mengubah ukurannya. |
bottom |
Meletakkan objek pada bagian bawah container, tanpa mengubah ukurannya. |
left |
Meletakkan objek pada bagian tepi kiri container-nya, tanpa mengubah ukurannya. Ini adalah
defaultnya. |
right |
Meletakkan objek pada bagian tepi kanan container-nya, tanpa mengubah ukurannya. |
center_vertical |
Meletakkan objek pada bagian tengah vertikal container-nya, tanpa mengubah ukurannya. |
fill_vertical |
Memperbesar ukuran vertikal objek jika diperlukan sehingga mengisi seluruh container-nya. |
center_horizontal |
Meletakkan objek pada bagian tengah horizontal container-nya, tanpa mengubah ukurannya. |
fill_horizontal |
Memperbesar ukuran horizontal objek jika diperlukan sehingga mengisi seluruh kontainernya.
|
center |
Meletakkan 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%, seperti 100% atau 12,5%.
android:scaleWidth
- Persentase. Lebar skala, dinyatakan sebagai persentase dari batas
drawable. Format nilai adalah XX%, seperti 100% atau 12,5%.
- 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 adalah 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>
- Wajib. 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 | Deskripsi |
"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 selebar 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 default-nya 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 default-nya adalah 3.
android:useLevel
- Boolean. Benar jika digunakan sebagai
LevelListDrawable
. Nilai ini biasanya salah,
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: Awalnya, setiap sudut harus diberikan radius sudut
lebih besar dari 1, atau sudut tidak akan melengkung. Jika Anda ingin sudut tertentu
agar tidak melengkung, solusinya adalah menggunakan android:radius
untuk menyetel radius sudut default
lebih dari 1, lalu ganti setiap sudut dengan nilai yang benar-benar
Anda inginkan, dengan memberikan 0 ("0dp") di tempat Anda tidak menginginkan sudut yang melengkung.
<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. Benar jika digunakan sebagai
LevelListDrawable
.
<padding>
- Padding untuk diterapkan pada elemen tampilan yang memuatnya. Padding 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: Secara default, bentuknya diskalakan ke ukuran tampilan
container yang sesuai dengan dimensi yang ditentukan di sini. 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:
-