page.title=Mendefinisikan Bayangan dan Memangkas Tampilan @jd:body
Desain bahan memperkenalkan elevasi untuk elemen-elemen UI. Elevasi membantu pengguna memahami arti penting relatif masing-masing elemen dan memfokuskan perhatian pada tugas yang ada.
Elevasi tampilan, yang dinyatakan dengan properti Z, menentukan tampilan visual bayangannya: tampilan dengan nilai Z lebih tinggi menghasilkan bayangan lebih besar dan lebih halus. Tampilan dengan nilai Z lebih tinggi menutupi tampilan dengan nilai Z lebih rendah; akan tetapi, nilai Z tampilan tidak memengaruhi ukuran tampilan.
Bayangan digambar oleh induk tampilan yang dinaikkan, sehingga terkena pemangkasan standar tampilan, yang dipangkas oleh induk secara default.
Elevasi juga berguna untuk membuat animasi tempat memunculkan widget untuk sementara di atas bidang tampilan saat melakukan beberapa tindakan.
Untuk informasi selengkapnya tentang elevasi dalam desain bahan, lihat Objek di ruang 3D.
Nilai Z untuk tampilan memiliki dua komponen:
Z = elevation + translationZ
Untuk mengatur elevasi tampilan dalam definisi layout, gunakan atribut android:elevation
.
Untuk mengatur elevasi tampilan dalam kode aktivitas, gunakan
metode {@link android.view.View#setElevation View.setElevation()}.
Untuk mengatur transformasi tampilan, gunakan metode {@link android.view.View#setTranslationZ View.setTranslationZ()}.
Metode {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} dan {@link android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} yang baru memudahkan Anda menganimasikan elevasi tampilan. Untuk informasi selengkapnya, lihat referensi API untuk {@link android.view.ViewPropertyAnimator} dan panduan pengembang Animasi Properti.
Anda juga bisa menggunakan {@link android.animation.StateListAnimator} untuk menetapkan animasi ini secara deklaratif. Ini khususnya berguna bila perubahan status memicu animasi, seperti saat seorang pengguna menekan tombol. Untuk informasi selengkapnya, lihat Menganimasikan Perubahan Status Tampilan.
Nilai Z diukur dengan satuan dp (density-independent pixel).
Batas-batas drawable latar belakang tampilan menentukan bentuk default bayangannya. Garis luar menyatakan bentuk luar objek grafis dan mendefinisikan bidang riak untuk umpan balik sentuh.
Perhatikan tampilan ini, yang didefinisikan dengan drawable latar belakang:
<TextView android:id="@+id/myview" ... android:elevation="2dp" android:background="@drawable/myrect" />
Drawable latar belakang didefinisikan sebagai persegi panjang dengan sudut membulat:
<!-- res/drawable/myrect.xml --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#42000000" /> <corners android:radius="5dp" /> </shape>
Tampilan ini menghasilkan bayangan dengan sudut membulat, karena drawable latar belakang mendefinisikan garis luar tampilan. Memberikan garis luar custom akan mengesampingkan bentuk default bayangan tampilan.
Untuk mendefinisikan garis luar custom suatu tampilan dalam kode Anda:
Anda bisa membuat garis luar lonjong dan persegi panjang yang bersudut membulat dengan menggunakan metode dalam
kelas {@link android.graphics.Outline}. Penyedia garis luar default untuk tampilan memperoleh garis luar
dari latar belakang tampilan. Untuk mencegah tampilan menghasilkan bayangan, atur penyedia garis luarnya
ke null
.
Memangkas tampilan memudahkan Anda mengubah bentuk tampilan. Anda bisa memangkas tampilan agar
konsistensi dengan elemen desain lainnya atau mengubah bentuk tampilan untuk merespons input pengguna.
Anda bisa memangkas tampilan hingga area garis luarnya dengan menggunakan metode {@link android.view.View#setClipToOutline
View.setClipToOutline()} atau atribut android:clipToOutline
. Hanya
garis-garis luar persegi panjang, lingkaran, dan persegi panjang bersudut bulat yang mendukung pemangkasan, seperti yang ditentukan oleh
metode {@link android.graphics.Outline#canClip Outline.canClip()}.
Untuk memangkas tampilan ke bentuk drawable, atur drawable sebagai latar belakang tampilan (seperti yang ditampilkan di atas) dan panggil metode {@link android.view.View#setClipToOutline View.setClipToOutline()}.
Memangkas tampilan adalah operasi yang mahal; jadi, jangan animasikan bentuk yang Anda gunakan untuk memangkas tampilan. Untuk memperoleh efek ini, gunakan animasi Reveal Effect.