การปรับแต่งบานหน้าต่างคู่

Android 12 นำเสนอการออกแบบ บานหน้าต่างคู่ โดยมีเมนู L0 แบบคงที่ทางด้านซ้ายและบานหน้าต่างเนื้อหาทางด้านขวา คุณลักษณะนี้แนะนำตัวเลือกการปรับแต่งใหม่ๆ มากมาย หน้านี้แสดงรายละเอียดคุณสมบัติเหล่านั้นและอธิบายวิธีการปรับแต่งการตั้งค่าของคุณเอง

เปลี่ยนกลับเป็นบานหน้าต่างเดียว

ตามค่าเริ่มต้น ตอนนี้ CarSettings จะแสดงมุมมองบานหน้าต่างคู่เมื่อหน้าต่างแอพมีความกว้างมากกว่าหรือเท่ากับ 1400dp และแสดงมุมมองบานหน้าต่างเดียวหากอย่างอื่น หากต้องการปรับแต่งสิ่งนี้สำหรับอุปกรณ์เฉพาะ ให้ใช้รันไทม์รีซอร์สโอเวอร์เลย์ (RRO) เพื่อกำหนดเป้าหมายค่าการกำหนดค่าที่จำเป็น:

ค่า คำอธิบาย
config_global_force_single_pane ตั้งค่าเป็น true หากแอปทั้งหมดทำงานในการกำหนดค่าบานหน้าต่างเดียว
config_homepage_fragment_class ระบุส่วนเริ่มต้นสำหรับหน้าแรก ในบานหน้าต่างคู่ สิ่งนี้ใช้สำหรับส่วนเริ่มต้นในบานหน้าต่างเนื้อหา ในบานหน้าต่างเดียว นี่ควรเป็นส่วนของหน้าแรก

ปุ่มส่วนหัว

เนื่องจากกิจกรรม CarSettings ที่แตกต่างกันสามารถมี IA แบบกำหนดเองได้ การแมปคีย์ส่วนหัวจึงมีไว้เพื่อทำให้การปรับแต่งง่ายขึ้น ใน AndroidManifest.xml ทุกกิจกรรมที่รองรับบานหน้าต่างคู่จะมี TOP_LEVEL_HEADER_KEY ระบุไว้ในข้อมูลเมตา ค่านี้ชี้ไปที่คีย์ที่ระบุใน res/values/header_keys.xml ซึ่งแม็พกับคีย์การกำหนดค่าตามความชอบของรายการเมนูระดับบนสุดที่แฟรกเมนต์เริ่มต้นอยู่ภายใต้ ดังนั้น หากส่วนเริ่มต้นของกิจกรรมมีการเปลี่ยนแปลงหรือ IA ถูกจัดเรียงใหม่เพื่อให้ส่วนย่อยใดตกอยู่ภายใต้การกำหนดค่าตามความชอบระดับบนสุดที่แตกต่างกัน การแม็ปที่เกี่ยวข้องในไฟล์ header_keys.xml สามารถอัพเดตเพื่อระบุค่าที่ถูกต้องได้ .

ปรับแต่งเค้าโครงกิจกรรม

โครงร่างสำหรับ BaseCarSettingsActivity อยู่ใน res/layout/car_setting_activity และในส่วนเหล่านี้:

ค่า คำอธิบาย
top_level_menu ส่วนเมนูระดับบนสุดที่แสดงในการกำหนดค่าบานหน้าต่างคู่ ความกว้างของส่วนนี้ระบุโดย top_level_menu_width โครงร่างฐานแชสซี (พร้อมแถบเครื่องมือ) ล้อมรอบมุมมองนี้
top_level_divider เส้นแนวตั้งที่แยกทั้งสองบานหน้าต่างและความกว้างที่คุณปรับแต่งได้ด้วย top_level_divider_width
fragment_container_wrapper เค้าโครง Wrapper สำหรับบานหน้าต่างเนื้อหา (หรือบานหน้าต่างหลักในการกำหนดค่าบานหน้าต่างเดียว) เค้าโครงฐานของแชสซี (พร้อมแถบเครื่องมือ) ล้อมรอบมุมมองนี้
settings_focus_parking_view การใช้งาน FocusParkingView แบบกำหนดเองเพื่อจับโฟกัสแบบหมุนเมื่อจำเป็น
fragment_container คอนเทนเนอร์เนื้อหาหลัก ส่วนของเนื้อหาใช้สิ่งนี้เป็นโครงร่างเป้าหมาย
restricted_message มุมมองการบล็อกที่จำกัด UX เพื่อแสดงบนอินสแตนซ์ของ BaseFragment

รูปที่ 1. เค้าโครงบานหน้าต่างคู่

การตั้งค่าระดับบนสุด

การตั้งค่าระดับบนสุดคือ CarUiPreferences แบบกำหนดเองพร้อมเค้าโครงที่ปรับเปลี่ยนเล็กน้อยเพื่อเปลี่ยนความสูงของการตั้งค่าและรูปร่างพื้นหลัง มีหลายวิธีในการปรับแต่งรูปลักษณ์ของการตั้งค่าเหล่านี้:

ค่า คำอธิบาย
res/layout/top_level_preference.xml ซ้อนทับเค้าโครงการตั้งค่า ทั้งหมด
top_level_preference_min_height ความสูงขั้นต่ำของการตั้งค่าระดับบนสุด ขึ้นอยู่กับเนื้อหา (เช่น มีคำบรรยาย) การตั้งค่าอาจสูงกว่าค่านี้
top_level_preference_corner_radius รัศมีของการปัดเศษมุม
top_level_preference_background ความเป็นมาของการตั้งค่าระดับบนสุดเมื่อไม่ได้ไฮไลต์ในปัจจุบัน
top_level_preference_highlight พื้นหลังของการตั้งค่าระดับบนสุดเมื่อไฮไลต์

ไอคอนระดับบนสุด

รูปที่ 2 แสดงให้เห็นว่าไอคอนระดับบนสุดประกอบด้วยไอคอนเวกเตอร์ภายในรูปร่างพื้นหลังที่มีสีอย่างไร ปัจจุบันรูปร่างนี้ได้รับการกำหนดค่าให้รองรับทั้งทรงวงรีหรือทรงสี่เหลี่ยม ตามค่าเริ่มต้น รูปร่างจะถูกตั้งค่าเป็นวงรี

หากต้องการเปลี่ยนค่าเริ่มต้น ให้แก้ไขค่าใน config_top_level_icon_shape (โดยที่ 0 คือสี่เหลี่ยมผืนผ้า และ 1 คือวงรี) ไอคอนถูกสร้างขึ้นโดยการแทรกไอคอนเบื้องหน้าโดย top_level_foreground_icon_inset จากรูปร่างพื้นหลัง ไอคอนระดับบนสุดแต่ละไอคอนมีสีพื้นหน้าที่ระบุใน res/values/colors.xml และสีพื้นหลังที่ระบุในโฟลเดอร์ res/color

หากต้องการสร้างรูปลักษณ์ที่กำหนดเอง คุณสามารถแทนที่ค่าสีทั้งหมดได้

รูปที่ 2. ส่วนประกอบการกำหนดลักษณะระดับบนสุด

ไอคอนสำหรับการกำหนดค่าตามความชอบที่แทรกซึ่งอยู่ในหมวดหมู่ที่ระบุโดย config_top_level_injection_categories จะถือเป็นไอคอนระดับบนสุดเช่นกัน ไอคอนที่ให้มาจะถูกแทรกด้วยค่าเดียวกันและอยู่ในรูปร่างเดียวกันกับที่ระบุไว้สำหรับไอคอนระดับบนสุดอื่นๆ ทั้งหมด (ดูด้านบน) อย่างไรก็ตาม พื้นหลังถูกกำหนดโดยการดูแอตทริบิวต์ต่อไปนี้ตามลำดับนี้:

  1. com.android.settings.bg.argb ข้อมูลเมตาจากแอปที่ฉีด
  2. com.android.settings.bg.hint ข้อมูลเมตาจากแอปที่ฉีด
  3. top_level_injected_default_background ระบุใน res/values/colors.xml

หากต้องการเพิกเฉยต่อข้อมูลแอปที่แทรกและใช้พื้นหลังเริ่มต้นเสมอ ให้ตั้งค่า config_top_level_injection_background_always_use_default เป็น true