รูปแบบและส่วนประกอบ

ใน 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) ของแฟรกเมนต์