Use Scalable UI, to build sophisticated, dynamic, and multi-panel user experiences in cars. Scalable UI:
Provides a flexible windowing system.
Minimizes engineering risks, costs, and complexities presented by the Compatibility Test Suite (CTS) for user interface implementations.
Scalable UI supports a wide range of modern In-Vehicle Infotainment (IVI) designs that need dynamic window arrangements.
Benefits and compliance
Scalable UI benefits include:
Lower test risk: The framework is pre-certified and compliant with the CTS, which eliminates the primary risk of test failures late in a program cycle. Scalable UI can save months of engineering effort and accelerate compliance.
More design flexibility: Proven capability to recreate numerous complex existing automotive windowing models. Scalable UI supports ambitious and highly differentiated designs.
Less implementation complexity: Abstraction into a high-level, config-driven XML model lowers the barrier to entry for custom windowing logic.
Better performance: Scalable UI is built on a highly performant windowing foundation, fully integrated with standard Android. Transitions are smooth and can be optimized.
Core building blocks
Scalable UI minimizes the need for OEM-specific code, eases updatability, and reduces launch risks by eliminating pitfalls and reducing certification issues.
Th XML-driven approach addresses common challenges when managing complex windowing systems in AAOS, such as those related to precise positioning, Z-order conflicts, and app focus.
Scalable UI provides these core building blocks.
Panel
A panel is the fundamental rectangular container on the screen. Each panel
maps to a dedicated root task for independent management. A panel can host
app tasks (TaskPanel
) or view-based content, such as widgets (DecorPanel
).
To learn more, see Configure a panel.
Variant
A variant defines a specific visual state for a panel and includes properties
such as bounds
(position and size), visibility
, layer
(Z-order), and
corner
radius. A single panel can have variants, such as opened
, closed
,
or minimized
. To learn more, see Use a variant to design a visual state.
Transition
A transition defines how a panel moves from its current state fromVariant
to a new state, toVariant
. The transition can be triggered by an Event
and
can define the animation that the panel goes through during the state change.
A panel should move from its current state to toVariant
. For synchronization,
all transitions are animated and coordinated by the core Window Manager.
- Event: A trigger to initiate a UI change. An OEM or the system can
predefine a trigger. For example,
_System_OnHomeEvent
,_System_TaskOpenEvent
, or a custom navigation button press.
For example, Scalable UI uses events to trigger transitions. These transitions animate a panel from one variant to another to display dynamic changes in the UI. These changes are communicated to other system apps to adjust content as needed. By defining UI relationships in XML, you can:
Specify complex UI behaviors: Define intricate user interface interactions.
Arrange windowing systems: Control window positioning and layering.
Implement visual themes: Apply consistent branding and aesthetics.
Reduce code complexity: Minimize the need for extensive custom code development.
To learn more, see Configure a transition.
System UI buttons
In addition to triggering intents, CarSystemBarButtons
can trigger a
ScalableUI event when tapped using event
, selectedEvent
, and
unselectedEvent
attributes.
event
describes the event to be triggered when the button is tapped. If
more granular control over an event is required, use the selectedEvent
and unselectedEvent
attributes to specify the event to trigger when the button
is selected or unselected, respectively.
When to implement System UI
This section describes optimal uses of Scalable UI.
- Create persistent multipanel layouts
- Implement a dynamic home scene
- Apply contextual overlays
- Design complex panel interactions
Create persistent multipanel layouts
Create a multi-zone experience in which different areas of the screen are permanently dedicated to specific functions. For example, dedicated media controls, a climate strip, or a full-screen map.
Use TaskPanels
for primary apps (such as navigation) and DecorPanels
for
UI elements, in the form of views, that must be placed between TaskPanels
.
Implement a dynamic home scene
Implement a Home scene composed of multiple, concurrently visible, and interactive app panels. For example, map, media player, and app grid.
To transition all relevant panels to their opened
or default
home variants,
configure _System_HomeEvent
.
Apply contextual overlays
Place non-app UI elements, such as contextual widgets, custom branding, and drag bars that can be animated in coordination with app tasks.
Use DecorPanels
for all purely decorative or widget-hosting elements. If a
widget hosts a fully functioning, launchable app, a Panel
> TaskPanel
is
optimal. Use DecorPanels
for view-based UI elements when layering must be
synchronized with the TaskPanel
layering.
Design complex panel interactions
Design advanced user-driven actions, such as dynamically resizing an app panel or adjusting instrument cluster views based on main display content.
Define custom Events
to trigger specific, non-system-standard Transitions
.