ใน Android 8.0 เมนูการตั้งค่าจะมีส่วนประกอบและวิดเจ็ตหลายอย่างที่ครอบคลุมการใช้งานทั่วไป ผู้ผลิตอุปกรณ์และนักพัฒนาได้รับการสนับสนุนให้ใช้ส่วนประกอบทั่วไปเมื่อขยายแอพการตั้งค่า เพื่อให้อินเทอร์เฟซผู้ใช้ใหม่มีความสอดคล้องกับ UI การตั้งค่าที่มีอยู่
นี่คือบทสรุปของการปรับปรุง:
- การเปลี่ยนแปลงพฤติกรรมตัวแบ่งในกรอบการตั้งค่าไลบรารีการสนับสนุน ตอนนี้ตัวแบ่งถูกวาดระหว่างหมวดหมู่
- การเปลี่ยนธีมของ ActionBar ตอนนี้ ActionBar ใช้ธีมสีอ่อนพร้อมข้อความสีเน้น
- รูปแบบการตั้งค่าใหม่ พื้นที่สำหรับไอคอนจะยังคงอยู่แม้ว่าการตั้งค่าจะไม่มีไอคอนก็ตาม
วิดเจ็ตใหม่:
- วิดเจ็ตส่วนหัวสำหรับรายละเอียดแอปพลิเคชัน แสดงไอคอนแอป ป้ายกำกับแอป และข้อมูลอื่นๆ
- ปุ่มขยายในบางหน้า เพจสามารถเริ่มต้นจากการยุบและซ่อนรายการที่มีความสำคัญน้อยกว่าจนกว่าผู้ใช้จะคลิกปุ่มขยาย
- UI ตัวเลือกแอปเริ่มต้น:
- UI สำหรับการเลือกเบราว์เซอร์เริ่มต้น แอปโทรศัพท์เริ่มต้น ฯลฯ
- เมื่อก่อนเป็นกล่องโต้ตอบ ตอนนี้เป็น UI ที่ใช้ปุ่มตัวเลือกแบบเต็มหน้าจอ
- การตั้งค่าสไตล์ "MasterSwitch" นี่คือค่ากำหนดที่มีเป้าหมายการคลิกสองครั้ง เป้าหมายด้านซ้ายนำไปสู่การตั้งค่าย่อยหรือเจตนา เป้าหมายที่ถูกต้องคือการสลับสวิตช์ควบคุมการเปิด/ปิดทั้งหน้า
ตัวอย่างและที่มา
- พฤติกรรมตัวแบ่ง
- หน้าทั้งหมดในการตั้งค่าได้รับการแก้ไขเพื่อใช้ลักษณะการทำงานของตัวแบ่งใหม่
- ลักษณะการทำงานของตัวแบ่งถูกกำหนดให้เป็น 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 โดยแต่ละคลาสใช้ตัวเลือกเพื่อจุดประสงค์ที่แตกต่างกัน
- คุณสามารถค้นหารหัสสำหรับคลาสพื้นฐานได้ใน:
- การตั้งค่าสไตล์ 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) ที่เขียนด้วยแต่ละองค์ประกอบเพื่อดูรายละเอียดเพิ่มเติม
การปรับแต่ง
- พฤติกรรมตัวแบ่ง หากต้องการเปลี่ยนวิธีการวาดตัวแบ่ง ให้อัปเดตสไตล์สำหรับตัวแบ่งการตั้งค่า และเปลี่ยนค่าดังต่อไปนี้:
- อนุญาต DividerAbove
- อนุญาต DividerBelow
- อนุญาต DividerAfterLastItem
- สีของธีม ActionBar กิจกรรมควรใช้
Theme.DeviceDefault.Settings
เป็นธีม หรือสร้างธีมที่กำหนดเองโดยใช้Theme.DeviceDefault.Settings
เป็นพาเรนต์ - วิดเจ็ตส่วนหัวของแอป ใช้ setters ใน AppHeaderController เพื่อปรับแต่งแต่ละฟิลด์และเรียก build() เมื่อตั้งค่าทุกฟิลด์แล้ว
- ปุ่มขยาย:
- หากต้องการปิดใช้งานฟังก์ชันการทำงานโดยสมบูรณ์ ให้แทนที่ Constructor สำหรับ ProgressiveDisclosureMixin และตั้งค่า KeepExpanded ให้เป็นจริง
- หากต้องการกำหนดจำนวนรายการที่จะแสดงในตอนแรก ให้เรียกใช้เมธอด
ProgressiveDisclosureMixin.setTileLimit()
ในระหว่างonAttach(Context)
ของแฟรกเมนต์