Định cấu hình bảng điều khiển

Bảng điều khiển mô tả các thuộc tính của vùng mà bảng điều khiển chiếm và đóng vai trò là một vùng chứa ứng dụng. Bạn sử dụng cấu hình XML để xác định các bảng điều khiển, giúp tuỳ chỉnh giao diện người dùng một cách linh hoạt và không cần mã. Để quản lý các phiên bản và trạng thái, hệ thống sẽ theo dõi các bảng điều khiển đã xác định.

Danh sách bảng điều khiển

Giao diện người dùng hệ thống tải các định nghĩa về bảng điều khiển từ một tài nguyên mảng có tên là window_states. Mảng tài nguyên này trỏ đến các tệp XML, trong đó các cấu hình bảng điều khiển riêng lẻ được xác định. Phương pháp tập trung này có nghĩa là các bảng điều khiển do Scalable UI quản lý sẽ được tải như dự kiến và sẵn sàng để hệ thống sử dụng.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="window_states">
       <item>@xml/app_panel</item>
       <item>@xml/back_panel</item>
       ...
   </array>
</resources>

Định nghĩa bảng điều khiển

Mỗi bảng điều khiển trong khung giao diện người dùng có thể mở rộng được xác định bằng một thẻ XML có tên là <TaskPanel>, mô tả các thuộc tính của một vùng chứa ứng dụng. Giao diện người dùng hệ thống tải các định nghĩa bảng điều khiển này và theo dõi các bảng điều khiển cho đến khi một cấu hình khác được tải.

Ví dụ: do thay đổi cấu hình vì xoay hoặc yêu cầu rõ ràng của hệ thống. <TaskPanel> đóng vai trò là một thành phần cơ bản để tạo trải nghiệm tuỳ chỉnh thông qua các thành phần giao diện người dùng có thể định cấu hình.

Thuộc tính XML

Thẻ <TaskPanel> có thể chứa những thuộc tính này mà bạn có thể dùng để xác định các trạng thái và quá trình chuyển đổi.

Thuộc tính Trạng thái Mô tả
id Bắt buộc Chỉ định giá trị nhận dạng duy nhất cho bảng điều khiển. Thuộc tính này được dùng để truy xuất bảng điều khiển từ PanelPool và quản lý trạng thái của bảng điều khiển trong hệ thống.
role Bắt buộc Xác định mục đích hoặc chức năng của bảng điều khiển trong hệ thống. Giá trị này có thể tham chiếu đến một tài nguyên chuỗi, một mảng chuỗi gồm tên thành phần hoặc một mã nhận dạng bố cục. Ví dụ: bạn có thể xác định các hoạt động liên tục phải luôn xuất hiện trên bảng điều khiển hoặc một bố cục sẽ được mở rộng.
defaultVariant Không bắt buộc Chỉ định mã nhận dạng của biến thể mà bảng điều khiển sẽ áp dụng ban đầu khi được tải. Nếu không được chỉ định, hệ thống có thể sử dụng biến thể được xác định đầu tiên làm biến thể mặc định.
displayId Không bắt buộc Chỉ định mã nhận dạng của màn hình mà bảng điều khiển dự kiến sẽ xuất hiện.
defaultLayer Không bắt buộc Có thể chỉ định thứ tự Z mặc định cho các biến thể của bảng điều khiển nếu các biến thể không xác định rõ ràng một lớp.
controller Không bắt buộc,
có thể thay đổi

Tham chiếu đến một tài nguyên (thường là mã nhận dạng XML) xác định một bộ điều khiển dành riêng cho bảng điều khiển, cho phép lưu trữ và truyền các giá trị cấu hình đến các bộ điều khiển bảng điều khiển tuỳ chỉnh.

Các bộ điều khiển này phải triển khai giao diện com.android.car.scalableui.panel.TaskPanelController. Một trường hợp sử dụng phổ biến của các bộ điều khiển này là xác định việc phân bổ tác vụ thời gian chạy linh hoạt trên bảng điều khiển.

Phần tử con XML

Thẻ <TaskPanel> có thể bao gồm các thuộc tính này để xác định đặc điểm và hành vi mặc định,

Thuộc tính Mô tả
<Variant>

Thẻ lồng nhau mô tả một cấu hình hình ảnh cụ thể cho bảng điều khiển tại bất kỳ thời điểm nào. Một bảng điều khiển có thể có nhiều biến thể, mỗi biến thể được xác định bằng một mã nhận dạng duy nhất.

Mỗi biến thể xác định các thuộc tính như ranh giới, khả năng hiển thị, lớp, alpha, bán kính góc và phần lồng ghép cho cấu hình cụ thể đó. Các biến thể cũng có thể kế thừa các thuộc tính từ một biến thể gốc.

<KeyFrameVariant> Phần mở rộng của <Variant> cho phép nội suy các thuộc tính trực quan giữa các biến thể khác nhau dựa trên giá trị phân số liên tục (từ 0 đến 1) và được dùng cho các hiệu ứng chuyển đổi mượt mà và linh hoạt, chẳng hạn như trong thao tác kéo, khi trạng thái của bảng điều khiển phụ thuộc vào một dữ liệu đầu vào liên tục như lượng kéo.
<Transitions>

Thẻ lồng nhau chứa một tập hợp các định nghĩa <Transition>, mô tả cách giao diện người dùng sẽ tạo ảnh động giữa các biến thể khác nhau.

Mỗi <Transition> xác định các biến thể fromto, sự kiện kích hoạt biến thể đó và có thể tuỳ ý chỉ định một Animator tuỳ chỉnh để dùng cho ảnh động, cũng như thời lượng và bộ nội suy.

Mã mẫu

<Panel id="@+id/panelId"
        role="@array/roleValue"
        defaultVariant="@id/closed"
        displayId="0" >

 <Variant id="@+id/base">
        <Bounds left="0" top="0" width="100%" height="100%"/>
 </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 fromVariant="@id/closed"
                toVariant="@id/opened"
                onEvent="open_event"/>
        <Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
    </Transition>
</Transitions>
</Panel>