Mengonfigurasi panel

Panel menjelaskan properti area yang ditempatinya dan berfungsi sebagai penampung aplikasi. Anda menggunakan konfigurasi XML untuk menentukan panel, yang memberikan pendekatan yang fleksibel dan bebas kode untuk menyesuaikan UI. Untuk mengelola instance dan status, sistem melacak panel yang ditentukan.

Daftar panel

UI Sistem memuat definisi panelnya dari resource array bernama window_states. Array resource ini mengarah ke file XML, tempat konfigurasi panel individual ditentukan. Pendekatan terpusat ini berarti bahwa panel yang dikelola oleh UI yang Dapat Diskalakan dimuat sesuai yang diinginkan dan siap digunakan oleh sistem.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="window_states">
       <item>@xml/app_panel</item>
       <item>@xml/back_panel</item>
       ...
   </array>
</resources>

Definisi panel

Setiap panel dalam framework UI yang Dapat Diskalakan ditentukan dengan tag XML bernama <TaskPanel>, yang menjelaskan properti penampung aplikasi. UI Sistem memuat definisi panel ini dan melacak panel hingga konfigurasi lain dimuat.

Misalnya, karena perubahan konfigurasi akibat rotasi atau permintaan sistem eksplisit. <TaskPanel> berfungsi sebagai komponen dasar untuk membangun pengalaman yang disesuaikan melalui komponen UI yang dapat dikonfigurasi.

Atribut XML

Tag <TaskPanel> dapat berisi atribut yang dapat Anda gunakan untuk menentukan status dan transisi.

Atribut Status Deskripsi
id Wajib Menentukan ID unik untuk panel. Atribut ini digunakan untuk mengambil panel dari PanelPool dan mengelola statusnya dalam sistem.
role Wajib Menentukan tujuan atau fungsi panel dalam sistem. Nilai dapat merujuk ke resource string, array string nama komponen, atau ID tata letak. Misalnya, ia dapat menentukan aktivitas persisten yang harus selalu ditampilkan di panel, atau tata letak yang akan di-inflate.
defaultVariant Opsional Menentukan ID varian yang harus diadopsi panel pada awalnya saat dimuat. Jika tidak ditentukan, sistem dapat menggunakan varian pertama yang ditentukan sebagai default.
displayId Opsional Menentukan ID layar tempat panel akan muncul.
defaultLayer Opsional Dapat menentukan urutan Z default untuk varian panel jika varian tidak menentukan lapisan secara eksplisit.
controller Opsional,
dapat berubah

Mereferensikan resource (biasanya ID XML) yang menentukan pengontrol khusus panel, yang memungkinkan penyimpanan dan penerusan nilai konfigurasi ke pengontrol panel kustom.

Pengontrol ini harus menerapkan antarmuka com.android.car.scalableui.panel.TaskPanelController. Kasus penggunaan umum pengontrol ini adalah untuk menentukan alokasi tugas runtime yang fleksibel di panel.

Elemen turunan XML

Tag <TaskPanel> dapat menyertakan atribut ini untuk menentukan karakteristik dan perilaku default,

Atribut Deskripsi
<Variant>

Tag bertingkat menjelaskan konfigurasi visual tertentu untuk panel pada waktu tertentu. Panel dapat memiliki beberapa varian, yang masing-masing diidentifikasi oleh ID unik.

Setiap varian menentukan properti seperti batas, visibilitas, lapisan, alfa, radius sudut, dan inset untuk konfigurasi tertentu tersebut. Varian juga dapat mewarisi properti dari varian induk.

<KeyFrameVariant> Ekstensi <Variant> memungkinkan interpolasi properti visual antara varian yang berbeda berdasarkan nilai fraksi berkelanjutan (0 hingga 1) dan digunakan untuk transisi yang lancar dan dinamis, seperti selama operasi penarikan, saat status panel bergantung pada input berkelanjutan seperti jumlah penarikan.
<Transitions>

Tag bertingkat berisi kumpulan definisi <Transition>, yang menjelaskan cara UI harus menganimasikan antara varian yang berbeda.

Setiap <Transition> menentukan varian from dan to, peristiwa yang memicunya, dan secara opsional dapat menentukan Animator kustom yang akan digunakan untuk animasi, serta durasi dan interpolator.

Kode contoh

<Panel id="@+id/panelId"
        role="@array/roleValue"
        defaultVariant="@id/closed"
        displayId="0" >

 <Variant id="@+id/base">
        <Bounds left="0" top="0" width="100%" height="100%"/>
 </Variant>

<Variant id="@+id/opened" parent="@id/base">
    <Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed"  parent="@id/base">
    <Visibility isVisible="false"/>
</Variant>

<Transitions>
    <Transition fromVariant="@id/closed"
                toVariant="@id/opened"
                onEvent="open_event"/>
        <Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
    </Transition>
</Transitions>
</Panel>