WFF sử dụng ngôn ngữ biểu thức để cho phép:
- Biến đổi giao diện bằng
Transform
hoặcGyro
- Hành vi có điều kiện thông qua câu lệnh
Condition
- Định dạng chuỗi trong phần tử
Template
Ngôn ngữ biểu thức là một ngôn ngữ tập lệnh chứa các toán tử thông thường và một loạt hàm có thể 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ể chất 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 việc sử dụng Transform
hoặc Template
và Condition
là Transform
và Template
yêu cầu biểu thức phải dẫn đến một giá trị (ví dụ: vị trí mới của phần tử bao bọc), trong khi Condition
yêu cầu biểu thức phải dẫn đến một boolean.
Ví dụ: Condition
có thể sử dụng:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
Hàm này sẽ đánh giá thành một boolean và xác định xem đó có phải là cuối tuần hay không, bằng cách sử dụng nguồn dữ liệu DAY_OF_WEEK
.
Hàm cũng được hỗ trợ, ví dụ: 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/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
Hàm clamp()
ràng buộc một giá trị trong hai giới hạn.
Đánh giá lại biểu thức
Tần suất đánh giá lại biểu thức phụ thuộc vào nguồn dữ liệu được sử dụng trong 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 ít thường xuyên nhất có thể. 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 - limits re-evaluation frequency (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, bạn đã xác định một BooleanConfiguration
có tên là showBackgroundInAfternoon
, thì bạn có thể sử dụng BooleanConfiguration
này trong một biểu thức:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1