ใน Android 8.0 เมนู "การตั้งค่า" มีคอมโพเนนต์และวิดเจ็ตมากมายที่ครอบคลุมการใช้งานทั่วไป ขอแนะนำให้ผู้ผลิตอุปกรณ์และนักพัฒนาซอฟต์แวร์ใช้คอมโพเนนต์ทั่วไปเมื่อขยายแอปการตั้งค่าเพื่อให้อินเทอร์เฟซผู้ใช้ใหม่สอดคล้องกับ UI การตั้งค่าที่มีอยู่
สรุปการปรับปรุงมีดังนี้
- การเปลี่ยนแปลงลักษณะการทำงานของตัวแบ่งในเฟรมเวิร์กค่ากำหนดไลบรารีการสนับสนุน ตอนนี้จะมีการวาดเส้นแบ่ง ระหว่างหมวดหมู่ต่างๆ
- เปลี่ยนธีม ActionBar ตอนนี้ 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
- คลาสย่อยของ DefaultApp PickerFragment มีอยู่หลายคลาส โดยแต่ละคลาสจะใช้เครื่องมือเลือกสำหรับความตั้งใจที่ต่างกัน
- คุณจะดูรหัสของชั้นเรียนพื้นฐานได้ใน
- ค่ากำหนดรูปแบบ MasterSwitch
- รหัสอยู่ที่:
https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
- ตัวอย่างกรณีการใช้งานคือสวิตช์หลักของ 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()
เมื่อตั้งค่าทุกช่องแล้ว - ปุ่มขยาย
- หากต้องการปิดใช้ฟังก์ชันการทำงานทั้งหมด ให้ลบล้างตัวสร้างสำหรับ ProgressiveEnforcementMixin และตั้งค่า KeepExpanded เป็น "จริง"
- หากต้องการปรับแต่งจำนวนรายการที่จะแสดงในตอนแรก ให้เรียกใช้เมธอด
ProgressiveDisclosureMixin.setTileLimit()
ระหว่างเมธอดonAttach(Context)
ของ Fragment