Android 12 introduce un nuevo diseño de doble panel, con un menú L0 estática en la izquierda y un panel de contenido a la derecha. Esta función presenta muchas opciones de personalización nuevas. Este artículo detalla esas funciones y explica cómo puede personalizar sus propias preferencias.
Volver a panel único
De forma predeterminada, CarSettings ahora muestra la vista de panel doble cuando la ventana de la aplicación es mayor o igual a 1400dp de ancho y la vista de panel único en caso contrario. Para personalizar esto para un dispositivo específico, use una superposición de recursos en tiempo de ejecución (RRO) para apuntar a los valores de configuración necesarios:
Valor | Descripción |
---|---|
config_global_force_single_pane | Se establece en true si toda la aplicación se va a ejecutar en la configuración de un solo panel. |
config_homepage_fragment_class | Especifica el fragmento inicial de la página de inicio. En el panel dual, esto se usa para el fragmento inicial en el panel de contenido. En un solo panel, este debería ser el fragmento de la página de inicio. |
Claves de encabezado
Debido a que las diferentes actividades de CarSettings pueden tener un IA personalizado, se proporciona una asignación de teclas de encabezado para simplificar las personalizaciones. En AndroidManifest.xml
, todas las actividades que soporta doble panel tiene una TOP_LEVEL_HEADER_KEY
se especifica en sus metadatos. Este valor apunta a una clave especificada en res/values/header_keys.xml
, que se asigna a la clave de preferencia del elemento de menú de nivel superior que el fragmento de partida cae bajo. Por lo tanto, si el fragmento a partir de una actividad se cambia o la IA se reordena de tal manera que un fragmento particular, cae bajo una preferencia de nivel superior diferente, la asignación correspondiente (s) en el header_keys.xml
archivo puede ser actualizado para especificar el valor correcto .
Personalizar el diseño de la actividad
La disposición de BaseCarSettingsActivity
se encuentra en res/layout/car_setting_activity
y en estas secciones:
Valor | Descripción |
---|---|
top_level_menu | Fragmento de menú de nivel superior mostrado en configuraciones de doble panel. Ancho de esta sección se especifica por top_level_menu_width . Un diseño de la base del chasis (con barra de herramientas) se envuelve alrededor de esta vista. |
top_level_divider | Línea vertical que divide los dos paneles y cuya anchura se pueden personalizar con top_level_divider_width . |
fragment_container_wrapper | Diseño de envoltura para el panel de contenido (o el panel principal en una configuración de panel único). Un diseño de base del chasis (con barra de herramientas) se envuelve alrededor de esta vista. |
settings_focus_parking_view | Implementación personalizada de FocusParkingView para mantener el foco de rotación cuando sea necesario. |
fragment_container | Contenedor de contenido principal. Los fragmentos de contenido lo utilizan como diseño de destino. |
restricted_message | Vista de bloqueo restringido-UX que deberá aparecer en casos de BaseFragment . |
Layout panel de la Figura 1. Dual
Preferencias de nivel superior
Preferencias
Las preferencias de nivel superior son CarUiPreferences personalizadas con un diseño ligeramente modificado para cambiar la altura de preferencia y la forma del fondo. Hay muchas formas diferentes de personalizar el aspecto de estas preferencias:
Valor | Descripción |
---|---|
res/layout/top_level_preference.xml | Superposición de todo el diseño preferencia. |
top_level_preference_min_height | Altura mínima de la preferencia de nivel superior. Dependiendo del contenido (por ejemplo, hay un subtítulo), las preferencias pueden ser más altas que este valor. |
top_level_preference_corner_radius | Radio del redondeo de la esquina. |
top_level_preference_background | Fondo de las preferencias de nivel superior cuando no están resaltadas actualmente. |
top_level_preference_highlight | Antecedentes de las preferencias de nivel superior cuando se resaltan. |
Iconos
La Figura 2 ilustra cómo los iconos de nivel superior ahora consisten en un icono de vector dentro de una forma de fondo de color. Esta forma está actualmente configurada para soportar una forma ovalada o rectangular. De forma predeterminada, la forma se establece en ovalada.
Para cambiar el valor predeterminado, modificar el valor en config_top_level_icon_shape
(donde 0 es rectángulo y 1 es oval). Los iconos son creados por insetting el icono de primer plano por top_level_foreground_icon_inset
de la forma de fondo. Cada icono de nivel superior tiene un color de primer plano especificado en res/values/colors.xml
y un color de fondo especificado en el res/color
carpeta.
Para crear una apariencia personalizada, puede anular todos los valores de color.
Componentes preferentes Figura 2. de nivel superior
Los iconos de preferencias inyectados que caen en las categorías especificadas por config_top_level_injection_categories
también son tratados como iconos de nivel superior. Los iconos proporcionados están insertados con el mismo valor y tienen la misma forma que la especificada para todos los demás iconos de nivel superior (ver arriba). Sin embargo, el fondo se determina observando los siguientes atributos en este orden:
-
com.android.settings.bg.argb
datos Meta de la aplicación de inyección. -
com.android.settings.bg.hint
datos Meta de la aplicación de inyección. -
top_level_injected_default_background
especificado enres/values/colors.xml
.
Hacer caso omiso de los datos de la aplicación por vía intravenosa y utilizar siempre el fondo por defecto, conjunto config_top_level_injection_background_always_use_default
de true
.