ใช้ Scalable UI เพื่อสร้างประสบการณ์ของผู้ใช้ที่ซับซ้อน ไดนามิก และหลายแผงในรถยนต์ Scalable UI มีลักษณะดังนี้
มีระบบการแสดงหน้าต่างที่ยืดหยุ่น
ลดความเสี่ยง ต้นทุน และความซับซ้อนด้านวิศวกรรมที่เกิดจากชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) สำหรับการใช้งานอินเทอร์เฟซผู้ใช้
Scalable UI รองรับการออกแบบ In-Vehicle Infotainment (IVI) ที่ทันสมัยหลากหลายรูปแบบซึ่งต้องมีการจัดเรียงหน้าต่างแบบไดนามิก รวมถึงรองรับประสบการณ์การใช้งานแบบเดิมที่มีการจัดเรียงหน้าต่างแบบคงที่ด้วย
Android 17 ขอแนะนำฟีเจอร์ต่อไปนี้ที่เฉพาะเจาะจงสำหรับการแสดงหน้าต่างขั้นสูง
- ใช้แผงการแจ้งเตือนแบบ Heads Up
- ปรับแต่งแถบระบบ
- เพิ่มการปฏิบัติตามข้อกำหนดในการทดสอบให้ได้มากที่สุดด้วยค่าคงที่ของ WindowManager
- ผสานรวมวิซาร์ดการตั้งค่า
ประสบการณ์ตัวอย่าง
Scalable UI ช่วยให้กำหนดค่าการแสดงหน้าต่างได้หลากหลายแบบไม่จำกัด ลองดูสถานการณ์ตัวอย่างต่อไปนี้ที่สร้างขึ้นเพื่อใช้ Scalable UI
พื้นหลังแผนที่พร้อมแอปแบบลอย
การกำหนดค่าพื้นหลังแผนที่พร้อมแอปพลิเคชันอื่นๆ ที่ลอยอยู่ด้านบน
พื้นหลังแอป
การกำหนดค่าพื้นหลังแอปพลิเคชันพร้อมแผงแบบลอย
แอปที่ปักหมุดไว้ใต้แอปอื่นๆ
แอปพลิเคชันที่ปักหมุดไว้ เช่น คอนเทนเนอร์วิดเจ็ต พร้อมแอปพลิเคชันอื่นๆ ที่เปิดขึ้นด้านบน
แผงแบบลอยตามเงื่อนไข
แผงแบบลอยตามเงื่อนไขที่จะปรากฏขึ้นเมื่อตรงตามเงื่อนไขที่เฉพาะเจาะจงเท่านั้น เช่น เมื่อมีการเล่นสื่อหรือเมื่อมีการทริกเกอร์การแจ้งเตือน
แอปที่ปักหมุดไว้ใกล้กับผู้ขับ
แอปพลิเคชันที่ปักหมุดไว้ซึ่งวางไว้ใกล้กับผู้ขับมากขึ้น
เลย์เอาต์การแยกหน้าจอ
เลย์เอาต์การแยกหน้าจอที่แสดงแอปพลิเคชัน 2 รายการเคียงข้างกัน
การแยกหน้าจอแบบอินเทอร์แอกทีฟ
เลย์เอาต์การแยกหน้าจอแบบอินเทอร์แอกทีฟที่อนุญาตให้ปรับขนาดแบบไดนามิก
เลย์เอาต์แบบหลายจุดยึดสำหรับหน้าจอขนาดใหญ่
เลย์เอาต์แบบหลายจุดยึดที่ออกแบบมาสำหรับหน้าจอขนาดใหญ่
ภาพสไลด์แอปในหน้าจอหลัก
เลย์เอาต์หน้าจอหลักที่มีภาพสไลด์แอปพลิเคชัน
สิทธิประโยชน์และการปฏิบัติตามข้อกำหนด
สิทธิประโยชน์ของ Scalable UI มีดังนี้
ความเสี่ยงในการทดสอบลดลง: เฟรมเวิร์กได้รับการรับรองล่วงหน้าและเป็นไปตามข้อกำหนด CTS ซึ่งช่วยลดความเสี่ยงหลักที่การทดสอบจะล้มเหลวในช่วงท้ายของวงจรโปรแกรม Scalable UI ช่วยประหยัดเวลาและความพยายามด้านวิศวกรรมได้หลายเดือน และเร่งการปฏิบัติตามข้อกำหนด
ความยืดหยุ่นในการออกแบบมากขึ้น: มีความสามารถที่ได้รับการพิสูจน์แล้วในการสร้างโมเดลการแสดงหน้าต่างที่ซับซ้อนที่มีอยู่มากมายในรถยนต์ Scalable UI รองรับการออกแบบที่ทะเยอทะยานและแตกต่างกันอย่างมาก
ความซับซ้อนในการใช้งานลดลง: การแยกออกเป็นโมเดล XML ระดับสูงที่ขับเคลื่อนด้วยการกำหนดค่าช่วยลดอุปสรรคในการเข้าถึงตรรกะการแสดงหน้าต่างที่กำหนดเอง
ประสิทธิภาพที่ดีขึ้น: Scalable UI ทำงานบนพื้นฐานการแสดงหน้าต่างประสิทธิภาพสูงที่ผสานรวมกับ Android มาตรฐานอย่างสมบูรณ์ ทรานซิชันทำงานได้อย่างราบรื่น ซึ่งช่วยให้เพิ่มประสิทธิภาพได้โดยตรง
องค์ประกอบหลักในการสร้างสรรค์
Scalable UI ช่วยลดความจำเป็นในการใช้โค้ดที่เฉพาะเจาะจงของ OEM, ทำให้การอัปเดตง่ายขึ้น และลดความเสี่ยงในการเปิดตัวโดยการกำจัดข้อผิดพลาดและลดปัญหาการรับรอง
แนวทางที่ขับเคลื่อนด้วย XML ช่วยแก้ปัญหาที่พบบ่อยเมื่อจัดการระบบการแสดงหน้าต่างที่ซับซ้อนใน AAOS เช่น การวางตำแหน่งที่แม่นยำ ความขัดแย้งของลำดับ Z และโฟกัสของแอป
Scalable UI มีองค์ประกอบหลักในการสร้างสรรค์ดังนี้
แผง
แผง คือคอนเทนเนอร์สี่เหลี่ยมผืนผ้าพื้นฐานบนหน้าจอ แผงแต่ละแผงจะแมปกับงานรูท ที่เฉพาะเจาะจงสำหรับการจัดการที่เป็นอิสระ แผงสามารถโฮสต์
งานของแอป (TaskPanel) หรือเนื้อหาที่อิงตามมุมมอง เช่น วิดเจ็ต (DecorPanel)
ดูข้อมูลเพิ่มเติมได้ที่ กำหนดค่าแผง
ตัวแปร
ตัวแปร กำหนดสถานะภาพที่เฉพาะเจาะจงสำหรับแผง และรวมถึงพร็อพเพอร์ตี้ต่างๆ เช่น bounds (ตำแหน่งและขนาด), visibility, layer (ลำดับ Z) และรัศมี corner แผงเดียวสามารถมีตัวแปรต่างๆ เช่น opened, closed หรือ minimized ดูข้อมูลเพิ่มเติมได้ที่ใช้ตัวแปรเพื่อออกแบบสถานะภาพ
การเปลี่ยนผ่าน
ทรานซิชัน กำหนดวิธีที่แผงย้ายจากสถานะปัจจุบัน fromVariant ไปยังสถานะใหม่ toVariant Event จะทริกเกอร์ทรานซิชัน ซึ่งกำหนดภาพเคลื่อนไหวที่แผงใช้ระหว่างการเปลี่ยนสถานะ แผงควรย้ายจากสถานะปัจจุบันไปยัง toVariant Window Manager หลักจะสร้างภาพเคลื่อนไหวและประสานงานทรานซิชันทั้งหมดเพื่อการซิงโครไนซ์
- Event: ทริกเกอร์เพื่อเริ่มการเปลี่ยนแปลง UI OEM หรือระบบสามารถกำหนดทริกเกอร์ล่วงหน้าได้ เช่น
_System_OnHomeEvent,_System_TaskOpenEventหรือการกดปุ่มการนำทางที่กำหนดเอง
ตัวอย่างเช่น Scalable UI ใช้ เหตุการณ์ เพื่อทริกเกอร์ ทรานซิชัน ทรานซิชันเหล่านี้จะสร้างภาพเคลื่อนไหว แผง จาก ตัวแปร หนึ่งไปยังอีกตัวแปรหนึ่งเพื่อแสดงการเปลี่ยนแปลงแบบไดนามิกใน UI Scalable UI จะแจ้งการเปลี่ยนแปลงเหล่านี้ไปยังแอปของระบบอื่นๆ เพื่อปรับเนื้อหาตามความจำเป็น การกำหนดความสัมพันธ์ของ UI ใน XML ช่วยให้คุณทำสิ่งต่อไปนี้ได้
ระบุลักษณะการทำงานที่ซับซ้อนของ UI: กำหนดการโต้ตอบที่ซับซ้อนของอินเทอร์เฟซผู้ใช้
จัดเรียงระบบการแสดงหน้าต่าง: ควบคุมการวางตำแหน่งและการซ้อนหน้าต่าง
ใช้ธีมภาพ: ใช้การสร้างแบรนด์และสุนทรียภาพที่สอดคล้องกัน
ลดความซับซ้อนของโค้ด: ลดความจำเป็นในการพัฒนาโค้ดที่กำหนดเองอย่างกว้างขวาง
ดูข้อมูลเพิ่มเติมได้ที่กำหนดค่าทรานซิชัน
ปุ่ม UI ของระบบ
นอกเหนือจากการทริกเกอร์ Intent แล้ว CarSystemBarButtons ยังสามารถทริกเกอร์เหตุการณ์ Scalable UI ได้เมื่อแตะโดยใช้แอตทริบิวต์ event, selectedEvent และ
unselectedEvent
event อธิบายเหตุการณ์ที่จะทริกเกอร์เมื่อแตะปุ่ม หากต้องการควบคุมเหตุการณ์แบบละเอียดมากขึ้น ให้ใช้แอตทริบิวต์ selectedEvent
และ unselectedEvent เพื่อระบุเหตุการณ์ที่จะทริกเกอร์เมื่อปุ่ม
ถูกเลือกหรือยกเลิกการเลือกตามลำดับ
เวลาที่ควรใช้ UI ของระบบ
ส่วนนี้จะอธิบายการใช้งาน Scalable UI ที่เหมาะสมที่สุด
- สร้างเลย์เอาต์หลายแผงแบบถาวร
- ใช้ฉากหน้าจอหลักแบบไดนามิก
- ใช้ภาพซ้อนทับตามบริบท
- ออกแบบการโต้ตอบของแผงที่ซับซ้อน
สร้างเลย์เอาต์หลายแผงแบบถาวร
สร้างประสบการณ์แบบหลายโซนที่พื้นที่ต่างๆ ของหน้าจอจะทุ่มเทให้กับฟังก์ชันที่เฉพาะเจาะจงอย่างถาวร เช่น การควบคุมสื่อเฉพาะ แถบสภาพอากาศ หรือแผนที่แบบเต็มหน้าจอ
ใช้ TaskPanels สำหรับแอปหลัก (เช่น การนำทาง) และ DecorPanels สำหรับองค์ประกอบ UI ในรูปแบบของมุมมองที่ต้องวางไว้ระหว่าง TaskPanels
ใช้ฉากหน้าจอหลักแบบไดนามิก
ใช้ฉากหน้าจอหลัก ที่ประกอบด้วยแผงแอปหลายแผงที่มองเห็นได้พร้อมกันและโต้ตอบได้ เช่น แผนที่ เครื่องเล่นสื่อ และตารางกริดสำหรับแอป
หากต้องการเปลี่ยนแผงที่เกี่ยวข้องทั้งหมดเป็นตัวแปรหน้าจอหลัก opened หรือ default ให้กำหนดค่า _System_HomeEvent
ใช้ภาพซ้อนทับตามบริบท
วางองค์ประกอบ UI ที่ไม่ใช่แอป เช่น วิดเจ็ตตามบริบท การสร้างแบรนด์ที่กำหนดเอง และแถบลากที่สามารถสร้างภาพเคลื่อนไหวร่วมกับงานของแอปได้
ใช้ DecorPanels สำหรับองค์ประกอบทั้งหมดที่เป็นการตกแต่งหรือโฮสต์วิดเจ็ตโดยเฉพาะ หาก
วิดเจ็ตโฮสต์แอปที่เปิดใช้ได้และทำงานได้อย่างสมบูรณ์ Panel > TaskPanel จะ
เหมาะสมที่สุด ใช้ DecorPanels สำหรับองค์ประกอบ UI ที่อิงตามมุมมองเมื่อต้องซิงโครไนซ์การซ้อนกับ TaskPanel
ออกแบบการโต้ตอบของแผงที่ซับซ้อน
ออกแบบการดำเนินการขั้นสูงที่ผู้ใช้เป็นผู้ขับเคลื่อน เช่น การปรับขนาดแผงแอปแบบไดนามิกหรือการปรับมุมมองแผงหน้าปัดตามเนื้อหาที่แสดงหลัก
กำหนด Events ที่กำหนดเองเพื่อทริกเกอร์ Transitions ที่เฉพาะเจาะจงซึ่งไม่ใช่มาตรฐานของระบบ