ב-Android 12 יש עיצוב של שתי חלוניות, עם תפריט L0 סטטי בצד ימין וחלונית תוכן בצד שמאל. התכונה הזו פותחת הרבה אפשרויות חדשות להתאמה אישית. בדף הזה מפורטות התכונות האלה ומוסבר איך להתאים אישית את ההעדפות שלכם.
חזרה לחלונית אחת
כברירת מחדל, תצוגת שתי החלוניות מוצגת באפליקציית CarSettings כשרוחב החלון של האפליקציה גדול מ-1,400dp או שווה לו, ובמקרים אחרים מוצגת תצוגת חלונית אחת. כדי להתאים אישית את ההגדרה הזו למכשיר ספציפי, משתמשים בשכבת-על של משאבים בסביבת זמן ריצה (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 |
פריסת עטיפה לחלונית התוכן (או לחלונית הראשית בהגדרה של חלונית אחת). התצוגה הזו מוקפת בתבנית בסיסית של שלדה (עם סרגל כלים). |
settings_focus_parking_view |
הטמעה מותאמת אישית של FocusParkingView כדי לשמור על המיקוד בתנועה סיבובית במקרה הצורך. |
fragment_container |
מאגר התוכן הראשי. קטעי תוכן משתמשים בהם כפריסת היעד. |
restricted_message |
תצוגת חסימה מוגבלת לממשק המשתמש שמוצגת במכונות של 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
נחשבים גם הם כסמלים ברמה העליונה.
הסמלים שסיפקתם יוצגו באותו ערך ובאותה צורה שצוינו לכל שאר הסמלים ברמה העליונה (ראו למעלה). עם זאת, הרקע נקבע על סמך המאפיינים הבאים לפי הסדר הבא:
com.android.settings.bg.argb
מטא-נתונים מהאפליקציה שמבצעת את ההזרקה.com.android.settings.bg.hint
מטא-נתונים מהאפליקציה שמבצעת את ההזרקה.top_level_injected_default_background
מצוין ב-res/values/colors.xml
.
כדי להתעלם מנתוני האפליקציה החדרת ולהשתמש תמיד ברקע ברירת המחדל, מגדירים את config_top_level_injection_background_always_use_default
ל-true
.