ใน Android 8.0 เมนูการตั้งค่าจะมีคอมโพเนนต์และวิดเจ็ตหลายรายการที่ครอบคลุมการใช้งานทั่วไป เราขอแนะนำให้ผู้ผลิตและนักพัฒนาอุปกรณ์ใช้คอมโพเนนต์ทั่วไปเมื่อขยายแอปการตั้งค่าเพื่อให้อินเทอร์เฟซผู้ใช้ใหม่สอดคล้องกับ UI การตั้งค่าที่มีอยู่
สรุปการปรับปรุงมีดังนี้
- การเปลี่ยนแปลงลักษณะการทํางานของตัวแบ่งในเฟรมเวิร์กค่ากําหนดของไลบรารีการสนับสนุน ตอนนี้ระบบจะวาดเส้นแบ่งระหว่างหมวดหมู่
- เปลี่ยนธีม ActionBar ตอนนี้แถบการดำเนินการใช้ธีมสีอ่อนพร้อมข้อความสีไฮไลต์
- เลย์เอาต์ค่ากําหนดใหม่ พื้นที่สำหรับไอคอนจะยังคงอยู่แม้ว่าค่ากําหนดจะไม่มีไอคอนก็ตาม
วิดเจ็ตใหม่
- วิดเจ็ตส่วนหัวสำหรับรายละเอียดแอป แสดงไอคอนแอป ป้ายกำกับแอป และข้อมูลอื่นๆ
- ปุ่มขยายในบางหน้า หน้าเว็บอาจเริ่มต้นแบบยุบซ่อนรายการที่ไม่สำคัญจนกว่าผู้ใช้จะคลิกปุ่มขยาย
- UI เครื่องมือเลือกแอปเริ่มต้น
- UI สำหรับเลือกเบราว์เซอร์เริ่มต้น แอปโทรศัพท์เริ่มต้น ฯลฯ
- จากเดิมที่เป็นกล่องโต้ตอบ ตอนนี้เป็น UI แบบปุ่มตัวเลือกแบบเต็มหน้าจอ
- ค่ากําหนดรูปแบบ "MasterSwitch" ค่ากําหนดนี้มีเป้าหมายการคลิก 2 รายการ เป้าหมายด้านซ้ายนําไปยังข้อมูลโค้ดหรือความตั้งใจย่อย เป้าหมายด้านขวาคือปุ่มเปิด/ปิดที่ใช้ควบคุมการเปิด/ปิดทั้งหน้า
ตัวอย่างและแหล่งที่มา
- ลักษณะการทํางานของตัวแบ่ง
- หน้าทั้งหมดในการตั้งค่าได้รับการแก้ไขให้ใช้ลักษณะการทํางานของตัวแบ่งใหม่
- ลักษณะการทํางานของตัวแบ่งกั้นจะกําหนดเป็น ThemeOverlay ใน
packages/apps/Settings/res/values/styles_preference.xml
- เปลี่ยนธีม ActionBar
- หน้าทั้งหมดในการตั้งค่าได้รับการแก้ไขให้ใช้ธีม ActionBar ใหม่
- ธีมจะกำหนดไว้ใน Theme.DeviceDefault.Settings
- เลย์เอาต์ค่ากำหนดใหม่
- ตอนนี้หน้าต่างๆ ในการตั้งค่าใช้เลย์เอาต์ค่ากำหนดใหม่แล้ว
- คุณดูรหัสได้ที่
packages/apps/Settings/res/values/styles_preference.xml
- วิดเจ็ตส่วนหัวของแอป
- หน้าข้อมูลแอปส่วนใหญ่ในการตั้งค่าใช้ส่วนหัวแอปใหม่อยู่แล้ว
- ดูตัวอย่างและโค้ดได้ที่
packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
- ปุ่มขยาย
- ดูตัวอย่างและโค้ดได้ที่
packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
หมายเหตุ: ต้องใช้คอมโพเนนต์นี้ร่วมกับ DashboardFragment (ดูรายละเอียดเพิ่มเติมเกี่ยวกับ DashboardFragment ในสถาปัตยกรรมข้อมูลฉบับปรับปรุง)
- ดูตัวอย่างและโค้ดได้ที่
- เครื่องมือเลือกแอปเริ่มต้น
- คุณดูรหัสของคลาสพื้นฐานได้ใน
packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
- DefaultAppPickerFragment มีคลาสย่อยหลายคลาส โดยแต่ละคลาสจะใช้เครื่องมือเลือกสำหรับ Intent ที่แตกต่างกัน
- คุณดูรหัสของคลาสพื้นฐานได้ใน
- ค่ากําหนดสไตล์ MasterSwitch
- รหัสอยู่ที่นี่
https://cs.android.com/android/platform/superproject/main/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
- ตัวอย่าง Use Case คือสวิตช์หลักของ Wi-Fi ดูตัวอย่างได้ที่
packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
- รหัสอยู่ที่นี่
การใช้งาน
ผู้ผลิตอุปกรณ์สามารถเริ่มใช้คอมโพเนนต์ใหม่ทั้งหมดได้ทันที หาก OEM ตัดสินใจที่จะใช้ค่ากำหนดสไตล์ "MasterSwitch" ใหม่หรือเครื่องมือเลือกแอปเริ่มต้น ก็ควรทำตามตัวอย่างในเอกสารนี้และไฟล์อ้างอิง (Javadoc) ที่เขียนขึ้นพร้อมกับคอมโพเนนต์แต่ละรายการเพื่อดูรายละเอียดเพิ่มเติม
ปรับแต่งเมนูการตั้งค่า
- ลักษณะการทํางานของเส้นแบ่ง หากต้องการเปลี่ยนวิธีวาดตัวแบ่ง ให้อัปเดตสไตล์ของตัวแบ่งการตั้งค่า และเปลี่ยนค่าต่อไปนี้
allowDividerAbove
allowDividerBelow
allowDividerAfterLastItem
- สีธีมของ ActionBar กิจกรรมควรใช้
Theme.DeviceDefault.Settings
เป็นธีม หรือสร้างธีมที่กำหนดเองโดยใช้Theme.DeviceDefault.Settings
เป็นธีมหลัก - วิดเจ็ตส่วนหัวของแอป ใช้ตัวตั้งค่าใน AppHeaderController เพื่อปรับแต่งแต่ละช่องและเรียกใช้
build()
เมื่อตั้งค่าช่องทั้งหมดแล้ว - ปุ่มขยาย
- หากต้องการปิดใช้ฟังก์ชันการทำงานนี้อย่างสมบูรณ์ ให้ลบล้างคอนสตรัคเตอร์สำหรับ ProgressiveDisclosureMixin และตั้งค่า keepExpanded เป็น true
- หากต้องการปรับแต่งจำนวนรายการที่จะแสดงในตอนแรก ให้เรียกใช้เมธอด
ProgressiveDisclosureMixin.setTileLimit()
ในระหว่างเมธอดonAttach(Context)
ของข้อมูลโค้ด