Pola dan komponen

Pada Android 8.0, menu Setelan mendapatkan beberapa komponen dan widget yang mencakup penggunaan umum. Produsen dan developer perangkat sebaiknya menggunakan komponen umum saat memperluas aplikasi Setelan agar antarmuka pengguna baru tetap konsisten dengan UI Setelan yang ada.

Berikut adalah ringkasan peningkatannya:

  • Perubahan perilaku pemisah dalam framework Preferensi library dukungan. Sekarang pembagi digambar di antara kategori.
  • Perubahan tema ViewGroup. Sekarang Tailwind menggunakan tema warna terang, dengan teks warna aksen.
  • Tata letak preferensi baru. Ruang untuk ikon tetap ada bahkan ketika preferensi tidak memiliki ikon.

Widget baru:

  • Widget header untuk detail aplikasi. Menampilkan ikon aplikasi, label aplikasi, dan informasi lainnya.
  • Tombol luaskan di beberapa halaman. Halaman dapat dimulai sebagai diciutkan dan menyembunyikan item yang kurang penting hingga pengguna mengklik tombol luaskan.
  • UI pemilih aplikasi default:
    • UI untuk memilih browser default, aplikasi ponsel default, dll.
    • Sebelumnya berupa dialog, kini menjadi UI berbasis tombol pilihan layar penuh.
  • Preferensi gaya "MasterSwitch". Ini adalah preferensi dengan dua target klik. Target kiri mengarah ke intent atau fragmen subset. Target kanan adalah tombol beralih, yang mengontrol aktivitas aktif/nonaktif untuk seluruh halaman.

Contoh dan sumber

  • Perilaku pemisah
    • Semua halaman di Setelan diubah untuk menggunakan perilaku pembagi baru.
    • Perilaku pembagi ditentukan sebagai ThemeOverlay di:
      packages/apps/Settings/res/values/styles_preference.xml
  • Perubahan tema ViewGroup
    • Semua halaman di Setelan diubah untuk menggunakan tema SharedPreference baru.
    • Tema ditentukan di Theme.DeviceDefault.Settings
  • Tata letak preferensi baru
    • Banyak halaman di Setelan kini menggunakan tata letak preferensi baru.
    • Anda dapat menemukan kodenya di:
      packages/apps/Settings/res/values/styles_preference.xml
  • Widget header aplikasi
    • Sebagian besar halaman informasi aplikasi di Setelan sudah menerapkan header Aplikasi baru.
    • Contoh dan kode dapat ditemukan di:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • Tombol luaskan
    • Contoh dan kode dapat ditemukan di:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      Catatan: Komponen ini harus digunakan bersama dengan DashboardFragment. (Lihat detail selengkapnya tentang DashboardFragment di Arsitektur Informasi yang Diperbarui.)

  • Pemilih aplikasi default
    • Anda dapat menemukan kode untuk class dasar di:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • Ada beberapa subclass DefaultAppPickerFragment yang masing-masing menerapkan pemilih untuk intent yang berbeda.
  • Preferensi gaya MasterSwitch
    • Kode ada di: https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
    • Contoh kasus penggunaannya adalah tombol utama Wi-Fi. Anda dapat menemukan contohnya di: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

Penerapan

Produsen perangkat bisa langsung menggunakan semua komponen baru. Jika OEM memutuskan untuk menerapkan preferensi gaya "MasterSwitch" baru atau alat pilih aplikasi default, mereka harus mengikuti contoh dalam dokumen ini dan file referensi (Javadoc) yang ditulis dengan setiap komponen untuk detail selengkapnya.

Menyesuaikan menu setelan

  • Perilaku pemisah. Untuk mengubah cara pembagi digambar, perbarui gaya untuk pembagi Setelan dan ubah nilai untuk hal berikut:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • Warna tema ViewGroup. Aktivitas harus menggunakan Theme.DeviceDefault.Settings sebagai temanya, atau membuat tema kustom menggunakan Theme.DeviceDefault.Settings sebagai induk.
  • Widget header aplikasi. Gunakan penyetel di AppHeaderController untuk menyesuaikan setiap kolom dan memanggil build() setelah semua kolom ditetapkan.
  • Tombol luaskan:
    • Untuk menonaktifkan fungsi sepenuhnya, ganti konstruktor untuk ProgressiveDisclosureMixin dan tetapkan keepExpanded ke true.
    • Untuk menyesuaikan jumlah item yang akan ditampilkan di awal, panggil metode ProgressiveDisclosureMixin.setTileLimit() selama metode onAttach(Context) fragmen.