Varian menentukan status visual tertentu untuk panel, sehingga satu
panel dapat memiliki beberapa representasi visual yang berbeda, seperti status
dibuka atau ditutup. Gunakan XML untuk mengonfigurasi varian. Gunakan
sub-tag dalam elemen <Panel>
.
Setiap tag <Variant>
memiliki atribut id
wajib untuk mengidentifikasinya secara unik.
Tag juga dapat merujuk ke varian induk untuk mewarisi properti. Mekanisme pewarisan ini memungkinkan definisi efisien properti umum di beberapa varian.
Atribut XML
Untuk menentukan status dan transisi, gunakan atribut ini dengan tag <TaskPanel>
atau
<DecorPanel>
.
Atribut | Status | Deskripsi |
---|---|---|
id |
Wajib | ID unik varian. ID ini digunakan untuk merujuk ke
varian dalam transisi atau sebagai defaultVariant untuk panel.
|
parent |
Opsional | Menentukan ID varian lain yang propertinya harus diwarisi oleh varian saat ini. Jika properti tidak ditentukan secara eksplisit dalam varian saat ini, properti tersebut akan kembali ke nilai yang ditentukan dalam varian induknya. |
Elemen turunan XML
Gunakan elemen opsional ini untuk menentukan karakteristik visual panel saat berada dalam status varian ini.
Elemen turunan | Deskripsi |
---|---|
<Visibility> |
Menentukan apakah panel terlihat atau tersembunyi dan berisi atribut
isVisible (boolean). |
<Alpha> |
Menentukan tingkat transparansi panel; berisi atribut
alpha (float, 0,0 hingga 1,0). |
<Layer> |
Menetapkan urutan Z panel relatif terhadap panel lain; berisi atribut
layer (bilangan bulat). Nilai yang lebih tinggi akan digambar di atas. |
<Focus> |
Menentukan apakah panel dapat memperoleh fokus selama transisi; berisi
atribut onTransition (boolean).
|
<Bounds> |
Menentukan area persegi panjang (posisi dan ukuran) panel di layar. Area ini dikontrol oleh atribut seperti kiri, atas, bawah, lebar, dan tinggi.
Saat menggunakan persentase, Anda dapat menggunakan atribut offset untuk menerapkan penyesuaian tetap pada batas berbasis persentase — Misalnya, untuk menetapkan bahwa panel menempati 100% tinggi layar sambil mengecualikan bilah navigasi dengan tinggi tetap di bagian bawah, tetapkan tinggi ke 100% dan |
<SafeBounds> |
Menentukan area aman dalam batas panel yang tidak tumpang-tindih
dengan potongan layar atau inset, untuk menekankan kompatibilitas aplikasi yang digambar
di dalamnya. Atributnya mirip dengan <Bounds> .
|
<Corner> |
Menentukan radius untuk sudut panel, sehingga memungkinkan sudut bulat dan berisi atribut radius (bilangan bulat). Sudut tajam adalah default dan tidak perlu ditentukan. |
<Insets> |
Menentukan inset (padding) untuk panel. Berisi atribut kiri, atas, kanan, bawah. Inset ini dilaporkan ke aplikasi yang diluncurkan dalam panel.
|
<Background> |
Memperkenalkan panel dekorasi latar belakang opsional, untuk mencegah efek tembus pandang saat aplikasi dialihkan. Menentukan properti seperti warna dan alfa untuk lapisan dekorasi ini. Properti lapisan dekorasi, seperti batas dan lapisan, secara default menggunakan properti varian jika belum ditetapkan. |
Kode contoh
<Variant id="@id/opened">
<Visibility isVisible="true"/>
<Bounds left="0dp"
top="0dp"
right="100%"
bottom="100%"
bottomOffset="100dp"/>
<Alpha value="1.0"/>
<Layer value="10"/>
<Focus onTransition="true"/>
<Corner radius="24dp"/>
<Insets left="16dp" top="0dp" right="16dp" bottom="48dp"/>
<Background color="@color/app_background" alpha="0.9"/>
</Variant>
Menginterpolasi properti visual
Gunakan KeyFrameVariant
untuk menginterpolasi properti visual. Ekstensi
variant
khusus ini didasarkan pada nilai fraksional berkelanjutan
(0 hingga 1) yang memungkinkan transisi dinamis yang lancar dan didorong oleh input berkelanjutan,
seperti operasi penarikan saat status panel berubah secara dinamis dengan
jumlah penarikan.
Atribut XML
KeyFrameVariant
tidak memiliki atribut. Tag <KeyFrameVariant>
berisi
informasi yang diperlukan untuk menentukan KeyFrameVariant
.
Elemen turunan XML
KeyFrameVariant
berisi satu atau beberapa tag turunan <KeyFrame>
. Setiap
<KeyFrame>
memiliki atribut framePosition
(0-100) dan mengacu pada atribut
varian (ID varian lain). keyframes
ini menentukan status panel pada titik tertentu dalam transisi berkelanjutan.
Kode Samole
<KeyFrameVariant id="@id/panel_resizing">
<KeyFrame framePosition="0" variant="@id/minimized"/>
<KeyFrame framePosition="75" variant="@id/opened"/>
<KeyFrame framePosition="100" variant="@id/expanded"/>
</KeyFrameVariant>