Chức năng là một tính năng của cả mặt đồng hồ thực và mặt đồng hồ thông minh, cho thấy thêm thông tin. Thông thường, người dùng sẽ chọn thông tin sẽ hiển thị trong một chức năng.
Thông thường, các chức năng có một số hình dạng:
- Hình chữ nhật
- Tròn
- Vòng cung, dọc theo cạnh của mặt đồng hồ
- Nền, bao phủ toàn bộ mặt đồng hồ
Trong Wear OS, hệ thống chức năng có thể được chia thành hai phần:
- Nguồn dữ liệu của chức năng
- Hoạt động kết xuất chức năng
Ví dụ: ứng dụng sức khoẻ và thể dục có thể triển khai nguồn dữ liệu chức năng Số bước hằng ngày. Mặt đồng hồ WFF có thể hiển thị thông tin này.
Nguồn dữ liệu trong chức năng
Nguồn dữ liệu của chức năng chỉ chỉ định dữ liệu cần hiển thị và loại chức năng. Nguồn dữ liệu không đóng vai trò gì trong việc xác định cách hiển thị dữ liệu trên mặt đồng hồ.
Ví dụ: nguồn dữ liệu chức năng Số bước hằng ngày về sức khoẻ và thể chất có thể tạo ra dữ liệu sau đây để cho biết người dùng đã đi được 2.400 bước trong số mục tiêu 10.000 bước hôm nay:
- Loại:
GOAL_PROGRESS
- Giá trị:
2400
- TargetValue:
10000
Lưu ý rằng không có gì trong dữ liệu này cho biết cách hiển thị dữ liệu này.
Mặt đồng hồ chỉ định những loại chức năng mà mặt đồng hồ có thể hiển thị. Thao tác này sẽ xác định những nguồn dữ liệu mà người dùng có thể chọn.
Trong ví dụ về Số bước hằng ngày, bạn sẽ quyết định cách hiển thị Value
và TargetValue
trong phần khai báo mặt đồng hồ: dưới dạng văn bản hay dưới dạng chỉ báo tiến trình? Đó là quyết định của bạn với tư cách là nhà thiết kế mặt đồng hồ.
Xác định chức năng
Việc cung cấp khả năng hiển thị các vùng chức năng trên mặt đồng hồ có thể mang lại giá trị cho người dùng, vì nó cho phép họ xem nhanh nhiều thông tin hơn và được tuỳ chỉnh theo nhu cầu của họ.
Quyết định xem có hỗ trợ chức năng nào trên mặt đồng hồ hay không, số lượng chức năng, hình dạng và vị trí của các chức năng cũng như loại dữ liệu mà các chức năng đó hỗ trợ.
Mỗi không gian trên mặt đồng hồ cho một chức năng được xác định là một ComplicationSlot
, trong đó một vùng giới hạn được xác định để kết xuất chức năng:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
x="0" y="0" width="225" height="225">
<BoundingArc centerX="225" centerY="225" width="450" height="450"
startAngle="270" endAngle="360" thickness="50" />
<Complication type="SHORT_TEXT">
<!-- Complication content for rendering SHORT_TEXT data goes here -->
</Complication>
<Complication type="SMALL_IMAGE">
<!-- Complication content for rendering SMALL_IMAGE data goes here -->
</Complication>
</ComplicationSlot>
Bạn có thể áp dụng phương pháp tương tự cho các hình dạng giới hạn khác như hình chữ nhật và hình elip.
Đặt loại chức năng và giá trị mặc định
Hệ thống chức năng cung cấp một số loại khác nhau, cho phép mặt đồng hồ thể hiện loại dữ liệu mà mặt đồng hồ có thể thể hiện trên màn hình. Ví dụ: chức năng Arc (như đã trình bày trước đó) không phù hợp với loại dữ liệu chức năng dựa trên hình ảnh như SMALL_IMAGE
, nhưng có thể hoạt động rất tốt với dữ liệu dạng số như RANGED_VALUE
.
Trong phần khai báo ComplicationSlot
, hãy đặt supportedTypes
thành danh sách được phân tách bằng dấu cách gồm các loại có thể hiển thị trong khe này.
Bạn cũng phải đặt nguồn mặc định cho ComplicationSlot
trừ phi bạn cho phép loại EMPTY
, trong trường hợp này, bạn không bắt buộc phải đặt nguồn mặc định:
<ComplicationSlot slotId="1" ...>
<BoundingArc .../>
<DefaultProviderPolicy
defaultSystemProvider="STEP_COUNT"
defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>
Ngoài việc phải chỉ định nhà cung cấp hệ thống, bạn có thể tuỳ ý chỉ định nhà cung cấp không phải hệ thống, chẳng hạn như nhà cung cấp bên thứ ba để sử dụng theo mặc định, nếu nhà cung cấp đó đã được cài đặt.
Kết xuất dữ liệu chức năng
Sau khi xác định ComplicationSlot
, giới hạn và chứa phần tử Complication
, hãy sử dụng các thành phần WFF tiêu chuẩn, chẳng hạn như PartDraw, PartImage
và PartText
để hiển thị dữ liệu chức năng.
Các phần tử trong dữ liệu Complication
có quyền truy cập vào một nguồn dữ liệu đặc biệt: COMPLICATION
. Nguồn dữ liệu này cung cấp nhiều thuộc tính dữ liệu do nguồn dữ liệu chức năng thiết lập.
Ví dụ: một chức năng SMALL_IMAGE
có thể đặt các giá trị COMPLICATION.SMALL_IMAGE
và COMPLICATION.SMALL_IMAGE_AMBIENT
. Bạn có thể sử dụng các phần tử này thay cho tài nguyên trong phần tử Image
:
<Complication type="SMALL_IMAGE">
<PartImage ...>
<Image resource="[COMPLICATION.SMALL_IMAGE]" />
</PartImage>
</Complication>
Mỗi loại chức năng có một tập hợp các thuộc tính có sẵn khác nhau mà bạn có thể đặt; để xem danh sách đầy đủ của từng loại, hãy xem tài liệu tham khảo về Complication
.
Ví dụ này hiển thị văn bản từ một chức năng SHORT_TEXT
:
<Complication type="SHORT_TEXT">
<PartText ...>
<Text>
<Font ...>
<Template>
<![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
</Template>
</Font>
</PartImage>
</Complication>
Tối đa hoá tính hữu ích khi hiển thị các chức năng
Có một số thách thức khi thêm ComplicationSlots
vào mặt đồng hồ:
- Có nhiều loại dữ liệu Chức năng. Các ứng dụng khác nhau có thể cung cấp một hoặc nhiều tính năng này.
- Mỗi loại dữ liệu Chức năng cũng như có các thuộc tính bắt buộc cũng có nhiều thuộc tính không bắt buộc. Kiểm tra để đảm bảo rằng kết xuất hữu ích nhất được tạo từ các thuộc tính có sẵn, có tính đến các tổ hợp khác nhau.
Để giải quyết các vấn đề này, bạn có thể áp dụng một số chiến lược sau:
- Hỗ trợ nhiều loại chức năng cho mỗi vùng chức năng. Ví dụ:
SHORT_TEXT
được các nguồn dữ liệu chức năng hỗ trợ khá rộng rãi, vì vậy, việc hỗ trợ một số loại khác nhau, chẳng hạn nhưSHORT_TEXT RANGED_VALUE
cho một chức năng tròn nhỏ, sẽ tăng khả năng tương thích. - Cung cấp nhiều loại chức năng trên mặt đồng hồ. Ví dụ: bạn có thể hỗ trợ
RANGED_VALUE
vàGOAL_PROGRESS
trên các vùng chức năng Arc ở vị trí cạnh, cũng nhưSHORT_TEXT
vàSMALL_IMAGE
trên các vùng chức năng hình tròn trong phần thân của mặt đồng hồ. - Kiểm tra các phần tử không bắt buộc cho từng loại dữ liệu. Ví dụ:
SHORT_TEXT
hỗ trợ tuỳ ý một thuộc tính tiêu đề và một hình ảnh. Bố cục hiển thị dữ liệu có sẵn có thể khác nhau tuỳ thuộc vào việc có hình ảnh hoặc tiêu đề hay không.