Trong chế độ cửa sổ nâng cao, cảnh màn hình chính bao gồm nhiều bảng điều khiển ứng dụng có thể tương tác và hiển thị đồng thời thay vì một hoạt động cụ thể trên màn hình chính. Tính năng tạo cửa sổ nâng cao sử dụng một phiên bản trống của hoạt động chính để làm rào cản về khả năng hiển thị cho các tác vụ nhiều cửa sổ.
Mặc dù Trình hướng dẫn thiết lập (SUW) thường được coi là một tác vụ chính, nhưng bạn nên định cấu hình SUW trong một bảng điều khiển để tạo trải nghiệm nhất quán và đáng tin cậy hơn cho người dùng.
Định cấu hình rào cản về tầm nhìn tại nhà
Xác nhận rằng hoạt động rào cản hiển thị trang chủ là một hoạt động trang chủ nhận biết trực tiếp khi khởi động có mức độ ưu tiên cao hơn cho bộ lọc ý định trang chủ so với hoạt động SUW.
Để tìm hiểu thêm, hãy xem nền tảng tham chiếu trong gói StubCarLauncher.
Bạn nên đưa gói này vào bản dựng và cài đặt cho tất cả người dùng.
Định cấu hình bảng SUW
Bạn nên đặt SUW trong một bảng điều khiển chuyên dụng để xử lý các điều kiện riêng biệt và cho phép vị trí chuyên dụng bên ngoài tác vụ gốc mặc định. Bạn có thể định cấu hình ranh giới và lớp của bảng điều khiển này.
Để SUW không bị che khuất, bạn nên đặt SUW ở một lớp tương đối cao. Bảng điều khiển này phải lần lượt hiện và ẩn các sự kiện hệ thống của _System_EnterSuwEvent và _System_ExitSuwEvent.
Hãy xem xét cấu hình mẫu sau:
<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
<TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
<Variant id="@+id/base">
<Layer layer="@integer/suw_panel_layer"/>
<Bounds left="0" top="0" width="100%" height="100%" />
<Background color="@color/suw_panel_background_color" />
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
<Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
<Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
<Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
</Transitions>
</TaskPanel>
...
<Controller id="suw_panel_controller">
<ControllerName>
com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
</ControllerName>
<PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>
Để phù hợp với ứng dụng SUW thông thường, nếu bảng điều khiển SUW trở nên không nhìn thấy được khi quá trình thiết lập đang diễn ra, thì bộ điều khiển sẽ gửi một tín hiệu trang chủ rõ ràng đến hoạt động SUW để thông báo rằng SUW đã bị che khuất.
Điều này giải quyết các trường hợp SUW biết người dùng đang cố gắng ẩn SUW bằng cách sử dụng ý định về màn hình chính nhưng không có quyền truy cập vào tín hiệu màn hình chính từ hệ thống.
Nếu có những kỳ vọng khác về thiết kế SUW, bạn có thể triển khai hành vi ưu tiên bằng cách thay thế SetupPanelController bằng một bộ điều khiển tuỳ chỉnh.