Pola dan komponen

Di Android 8.0, menu Setelan mendapatkan beberapa komponen dan widget yang mencakup penggunaan umum. Produsen dan developer perangkat disarankan untuk menggunakan komponen umum saat memperluas aplikasi {i>Settings<i} sehingga antarmuka pengguna baru tetap konsisten dengan UI Setelan yang sudah ada.

Berikut adalah ringkasan peningkatannya:

  • Perubahan perilaku pemisah dalam framework Preferensi library dukungan. Pembagi adalah sekarang digambar di antara kategori.
  • Perubahan tema ViewGroup. Sekarang LatLng 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 lebih sedikit disembunyikan item penting hingga pengguna mengklik tombol {i>expand<i}.
  • UI pemilih aplikasi default:
    • UI untuk memilih browser default, aplikasi ponsel default, dll.
    • Sebelumnya berupa dialog, kini menjadi UI berbasis tombol pilihan layar penuh.
  • "MasterSwitch" preferensi gaya. Ini adalah preferensi dengan dua kali klik, target. Target kiri mengarah ke intent atau fragmen subset. Target yang tepat adalah tombol aktif/nonaktif, untuk mengontrol keseluruhan 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 kode ini 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 dari DefaultAppPickerFragment, yang masing-masing menerapkan pemilih untuk intent yang berbeda.
  • Preferensi gaya MasterSwitch
    • Kode ada di: https://cs.android.com/android/platform/superproject/main/+/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

Implementasi

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

Menyesuaikan menu setelan

  • Perilaku pemisah. Untuk mengubah cara {i>divider<i} digambar, perbarui gaya untuk {i>divider<i} {i>Settings<i} dan ubah nilai untuk yang berikut ini:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • Warna tema ViewGroup. Aktivitas harus menggunakan Theme.DeviceDefault.Settings sebagai temanya, atau buat tema kustom menggunakan Theme.DeviceDefault.Settings sebagai induk.
  • Widget header aplikasi. Menggunakan penyetel di AppHeaderController untuk menyesuaikan setiap kolom dan memanggil build() setelah semua kolom ditetapkan.
  • Tombol luaskan:
    • Untuk menonaktifkan fungsi tersebut sepenuhnya, ganti konstruktor untuk ProgressiveDisclosureMixin dan tetapkan keepExpanded ke true.
    • Untuk menyesuaikan berapa banyak item yang akan ditampilkan pertama kali, panggil metode Metode ProgressiveDisclosureMixin.setTileLimit() selama fragmen Metode onAttach(Context).