Kustomisasi Panel Ganda

Android 12 memperkenalkan desain panel ganda baru, dengan menu L0 statis di sebelah kiri dan panel konten di sebelah kanan. Fitur ini memperkenalkan banyak opsi penyesuaian baru. Artikel ini merinci fitur-fitur tersebut dan menjelaskan bagaimana Anda dapat menyesuaikan preferensi Anda sendiri.

Kembali ke panel tunggal

Secara default, CarSettings sekarang menampilkan tampilan panel ganda ketika jendela aplikasi lebih besar dari atau sama dengan lebar 1400dp dan tampilan panel tunggal sebaliknya. Untuk menyesuaikan ini untuk perangkat tertentu, gunakan Runtime Resource Overlay (RRO) untuk menargetkan nilai konfigurasi yang diperlukan:

Nilai Keterangan
config_global_force_single_pane Setel ke true jika seluruh aplikasi dijalankan dalam konfigurasi panel tunggal.
config_homepage_fragment_class Menentukan fragmen awal untuk beranda. Di panel ganda, ini digunakan untuk fragmen awal di panel konten. Di panel tunggal, ini harus menjadi fragmen beranda.

Tombol tajuk

Karena aktivitas CarSettings yang berbeda dapat memiliki IA yang disesuaikan, pemetaan kunci header disediakan untuk menyederhanakan penyesuaian. Di AndroidManifest.xml , setiap aktivitas yang mendukung panel ganda memiliki TOP_LEVEL_HEADER_KEY yang ditentukan dalam metadatanya. Nilai ini menunjuk ke kunci yang ditentukan dalam res/values/header_keys.xml , yang dipetakan ke kunci preferensi item menu tingkat atas tempat fragmen awal berada. Oleh karena itu, jika fragmen awal aktivitas diubah atau IA disusun ulang sehingga fragmen tertentu berada di bawah preferensi tingkat atas yang berbeda, pemetaan yang relevan dalam file header_keys.xml dapat diperbarui untuk menentukan nilai yang benar .

Sesuaikan tata letak aktivitas

Tata letak untuk BaseCarSettingsActivity terletak di res/layout/car_setting_activity dan di bagian ini:

Nilai Keterangan
top_level_menu Fragmen menu tingkat atas ditampilkan dalam konfigurasi panel ganda. Lebar bagian ini ditentukan oleh top_level_menu_width . Tata letak dasar sasis (dengan bilah alat) dililitkan di sekitar tampilan ini.
top_level_divider Garis vertikal yang membagi dua panel dan lebarnya dapat Anda sesuaikan dengan top_level_divider_width .
fragment_container_wrapper Tata letak pembungkus untuk panel konten (atau panel utama dalam konfigurasi singlepane). Tata letak dasar sasis (dengan bilah alat) dililitkan di sekitar tampilan ini.
settings_focus_parking_view Implementasi khusus FocusParkingView untuk menahan fokus putar saat diperlukan.
fragment_container Wadah konten utama. Fragmen konten menggunakan ini sebagai tata letak target.
restricted_message Tampilan pemblokiran terbatas UX untuk ditampilkan pada instance BaseFragment .

Gambar 1. Tata letak panel ganda

Preferensi tingkat atas

Preferensi

Preferensi tingkat atas adalah CarUiPreferences kustom dengan tata letak yang sedikit dimodifikasi untuk mengubah ketinggian preferensi dan bentuk latar belakang. Ada banyak cara berbeda untuk menyesuaikan tampilan preferensi ini:

Nilai Keterangan
res/layout/top_level_preference.xml Overlay seluruh tata letak preferensi.
top_level_preference_min_height Tinggi minimum dari preferensi tingkat atas. Bergantung pada konten (misalnya, subtitle ada), preferensi mungkin lebih tinggi dari nilai ini.
top_level_preference_corner_radius Radius pembulatan sudut.
top_level_preference_background Latar belakang preferensi tingkat atas saat tidak disorot.
top_level_preference_highlight Latar belakang preferensi tingkat atas saat disorot.

ikon

Gambar 2 mengilustrasikan bagaimana ikon tingkat atas sekarang terdiri dari ikon vektor di dalam bentuk latar belakang berwarna. Bentuk ini saat ini dikonfigurasi untuk mendukung bentuk oval atau persegi panjang. Secara default, bentuk diatur ke oval.

Untuk mengubah default, ubah nilai di config_top_level_icon_shape (di mana 0 adalah persegi panjang dan 1 adalah oval). Ikon dibuat dengan memasukkan ikon latar depan dengan top_level_foreground_icon_inset dari bentuk latar belakang. Setiap ikon tingkat atas memiliki warna latar depan yang ditentukan di res/values/colors.xml dan warna latar belakang yang ditentukan di folder res/color .

Untuk membuat tampilan yang disesuaikan, Anda dapat mengganti semua nilai warna.

Gambar 2. Komponen preferensi tingkat atas

Ikon untuk preferensi yang dimasukkan yang termasuk dalam kategori yang ditentukan oleh config_top_level_injection_categories juga diperlakukan sebagai ikon tingkat atas. Ikon yang disediakan disisipkan dengan nilai yang sama dan ke dalam bentuk yang sama seperti yang ditentukan untuk semua ikon tingkat atas lainnya (lihat di atas). Namun, latar belakang ditentukan dengan melihat atribut berikut dalam urutan ini:

  1. com.android.settings.bg.argb Meta data dari aplikasi injeksi.
  2. com.android.settings.bg.hint Meta data dari aplikasi injeksi.
  3. top_level_injected_default_background Ditentukan dalam res/values/colors.xml .

Untuk mengabaikan data aplikasi penyuntikan dan selalu menggunakan latar belakang default, setel config_top_level_injection_background_always_use_default ke true .