Tạo biểu thức

WFF sử dụng một ngôn ngữ biểu thức để cho phép:

  • Biến đổi giao diện bằng cách sử dụng Transform hoặc Gyro
  • Hành vi có điều kiện thông qua câu lệnh Condition
  • Định dạng chuỗi trong các phần tử Template

Ngôn ngữ biểu thức là một ngôn ngữ kịch bản chứa các toán tử thông thường và một loạt các hàm có thể được sử dụng.

Biểu thức có thể sử dụng nguồn dữ liệu (được biểu thị bằng dấu ngoặc vuông) để cho phép bạn phản ứng với các dữ liệu đầu vào bên ngoài, chẳng hạn như ngày và giờ hiện tại, các chỉ số về sức khoẻ và thể dục, hoặc thậm chí là thời tiết.

Khi sử dụng biểu thức, sự khác biệt chính giữa cách sử dụng Transform, TemplateConditionTransformTemplate yêu cầu biểu thức phải tạo ra một giá trị (ví dụ: vị trí mới của phần tử bao quanh) trong khi Condition yêu cầu biểu thức phải tạo ra một boolean.

Khi dùng trong phần tử Condition, hãy chỉ định biểu thức dưới dạng phần tử văn bản. Bao bọc biểu thức trong một phần tử CDATA để tránh phải sử dụng các tham chiếu thực thể, chẳng hạn như "&.

<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>

Điều này đánh giá thành một giá trị boolean và xác định xem đó có phải là ngày cuối tuần hay không, bằng cách sử dụng nguồn dữ liệu DAY_OF_WEEK.

Các hàm cũng được hỗ trợ, chẳng hạn như biểu thức để xoay giá trị lên đến 5 độ theo một trong hai hướng, dựa trên x-value của gia tốc kế trên thiết bị Wear OS:

(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

Hàm clamp() giới hạn một giá trị trong hai ranh giới.

Đánh giá lại biểu thức

Tần suất đánh giá lại các biểu thức phụ thuộc vào nguồn dữ liệu được dùng trong các biểu thức đó. Ví dụ: biểu thức [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 chỉ đánh giá lại khi bắt đầu một ngày mới. Tuy nhiên, biểu thức sử dụng nguồn dữ liệu [SECOND] sẽ đánh giá lại mỗi giây.

Việc đánh giá lại có thể dẫn đến việc tính toán lại và kết xuất lại cảnh, dựa trên sự thay đổi trong kết quả của biểu thức. Do đó, điều quan trọng là bạn phải luôn sử dụng các nguồn dữ liệu đánh giá lại càng ít càng tốt. Ví dụ: để xác định xem có phải là buổi chiều hay không:

<!-- BAD: Re-evaluates every second -->
[SECONDS_IN_DAY] > 43200

<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

Giá trị cấu hình trong biểu thức

Ngoài các hàm và nguồn dữ liệu, bạn có thể sử dụng các giá trị cấu hình. Ví dụ: nếu trong UserConfigurations, một BooleanConfiguration có tên là showBackgroundInAfternoon đã được xác định, thì bạn có thể dùng showBackgroundInAfternoon trong một biểu thức:

<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>