Penyesuaian panel ganda

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

Kembalikan ke satu panel

Secara default, CarSettings kini menampilkan tampilan panel ganda saat lebar jendela aplikasi lebih besar dari atau sama dengan 1400dp, dan tampilan panel tunggal jika tidak. Untuk menyesuaikan hal ini untuk perangkat tertentu, gunakan overlay resource runtime (RRO) untuk menargetkan nilai konfigurasi yang diperlukan:

Nilai Deskripsi
config_global_force_single_pane Tetapkan ke true jika seluruh aplikasi akan berjalan dalam konfigurasi satu panel.
config_homepage_fragment_class Menentukan fragmen awal untuk halaman beranda. Dalam panel ganda, ini digunakan untuk fragmen awal di panel konten. Dalam panel tunggal, ini harus berupa fragmen halaman beranda.

Kunci header

Karena aktivitas CarSettings yang berbeda dapat memiliki IA yang disesuaikan, pemetaan tombol 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 mengarah ke kunci yang ditentukan dalam res/values/header_keys.xml, yang dipetakan ke kunci preferensi item menu tingkat atas yang termasuk dalam fragmen awal. Oleh karena itu, jika fragmen awal aktivitas diubah atau IA diatur ulang sedemikian rupa sehingga fragmen tertentu berada pada preferensi tingkat atas yang berbeda, pemetaan yang relevan dalam file header_keys.xml dapat diperbarui untuk menentukan nilai yang benar.

Menyesuaikan tata letak aktivitas

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

Nilai Deskripsi
top_level_menu Fragmen menu tingkat atas yang ditampilkan dalam konfigurasi panel ganda. Lebar bagian ini ditentukan oleh top_level_menu_width. Tata letak dasar sasis (dengan toolbar) digabungkan dengan tampilan ini.
top_level_divider Garis vertikal yang memisahkan dua panel dan lebarnya dapat Anda sesuaikan dengan top_level_divider_width.
fragment_container_wrapper Tata letak wrapper untuk panel konten (atau panel utama dalam konfigurasi panel tunggal). Tata letak dasar sasis (dengan toolbar) digabungkan dengan tampilan ini.
settings_focus_parking_view Implementasi kustom FocusParkingView untuk mempertahankan fokus dari tombol putar saat diperlukan.
fragment_container Penampung konten utama. Fragmen konten menggunakan ini sebagai tata letak target.
restricted_message Tampilan pemblokiran yang dibatasi UX untuk ditampilkan di instance BaseFragment.

Gambar 1. Tata letak panel ganda

Preferensi tingkat teratas

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

Nilai Deskripsi
res/layout/top_level_preference.xml Tumpang-tindih seluruh tata letak preferensi.
top_level_preference_min_height Tinggi minimum preferensi tingkat atas. Bergantung pada konten (misalnya, subtitel 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 jika saat ini tidak ditandai.
top_level_preference_highlight Latar belakang preferensi tingkat atas saat ditandai.

Ikon tingkat atas

Gambar 2 mengilustrasikan bagaimana ikon tingkat atas kini 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 disetel ke oval.

Untuk mengubah default, ubah nilai di config_top_level_icon_shape (dengan 0 adalah persegi panjang dan 1 adalah oval). Ikon dibuat dengan menyisipkan ikon latar depan dengan top_level_foreground_icon_inset dari bentuk latar belakang. Setiap ikon tingkat teratas 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 teratas

Ikon untuk preferensi yang dimasukkan yang termasuk dalam kategori yang ditentukan oleh config_top_level_injection_categories juga diperlakukan sebagai ikon tingkat teratas. Ikon yang diberikan 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 Metadata dari aplikasi injeksi.
  2. com.android.settings.bg.hint Metadata dari aplikasi injeksi.
  3. top_level_injected_default_background Ditentukan dalam res/values/colors.xml.

Untuk mengabaikan data aplikasi yang dimasukkan dan selalu menggunakan latar belakang default, tetapkan config_top_level_injection_background_always_use_default ke true.