Udostępnianie przydatnych danych za pomocą widżetów

Widżety to funkcja tarczy zegarka, która wyświetla dodatkowe informacje. Dotyczy to zarówno tarczy zegarka na nadgarstku, jak i na tarczy zegarka na nadgarstku. Zwykle użytkownik wybiera, jakie informacje mają być wyświetlane w komplikacji.

Zwykle widżety występują w kilku formach:

  1. Prostokątny
  2. Okrągły
  3. łuki na krawędzi tarczy zegarka,
  4. tło, które pokrywa całą tarczę zegarka;

W Wear OS system widżetów można podzielić na 2 części:

  1. źródło danych widżetu.
  2. renderowanie widżetu.

Aplikacja do dbania o zdrowie i kondycję może na przykład stosować źródło danych „Kroki dziennie”. Może ona być renderowana przez tarczę zegarka WFF.

Źródła danych w komplikacjach

Źródła danych widżetów określają tylko dane, które mają zostać wyrenderowane, oraz typ widżetu. Źródło danych nie ma wpływu na sposób wyświetlania danych na tarczy zegarka.

Na przykład źródło danych z komplikacji Kroki dzienne dotyczące zdrowia i aktywności fizycznej może zwrócić te dane, aby wskazać, że użytkownik wykonał 2400 kroków z docelowych 10 tys. kroków:

Pamiętaj, że w tych danych nie ma nic, co wskazywałoby, jak należy je renderować.

Tarcza zegarka określa, jakie typy widżetów może renderować. Określa to, które źródła danych są dostępne dla użytkownika.

W przypadku przykładu kroków dziennych w definicji tarczy zegarka decydujesz, jak mają być renderowane wartości ValueTargetValue: w postaci tekstu czy wskaźnika postępu. To Ty jako projektant tarczy zegarka decydujesz, czy chcesz to zrobić.

Definiowanie widżetów

Umożliwienie wyświetlania widżetów na tarczy zegarka może być przydatne dla użytkowników, ponieważ pozwala im na szybki dostęp do większej liczby informacji dostosowanych do ich potrzeb.

Zdecyduj, czy i ile komplikacji chcesz obsługiwać na tarczy zegarka, jakie mają być ich kształty i pozycje oraz jakie typy danych mają obsługiwać.

Każda przestrzeń na tarczy zegarka przeznaczona na komplikację jest określana jako ComplicationSlot, w której zdefiniowana jest ograniczona przestrzeń do renderowania komplikacji:

<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>

Podobną metodę można zastosować do innych ograniczających kształtów, takich jak prostokąt i elipsa.

Ustawianie typu widżetu i wartości domyślnych

System komplikacji zapewnia wiele różnych typów, które umożliwiają tarczy zegarka określenie typu danych, które może wyświetlać na ekranie. Na przykład widżet Arc, jak pokazano wcześniej, nie jest najlepszym rozwiązaniem w przypadku typu danych widżetu opartego na obrazie, takiego jak SMALL_IMAGE, ale może bardzo dobrze sprawdzać się w przypadku danych numerycznych, takich jak RANGED_VALUE.

W deklaracji ComplicationSlot ustaw wartość supportedTypes na listę oddzielonych spacjami typów, które mogą być renderowane w tym slocie.

Musisz też ustawić domyślne źródło dla ComplicationSlot, chyba że zezwolisz na typ EMPTY, w którym przypadku ustawienie domyślnego źródła jest opcjonalne:

<ComplicationSlot slotId="1" ...>
    <BoundingArc .../>
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>

Oprócz dostawców systemowych opcjonalnie możesz określić dostawców niesystemowych, np. zewnętrznych, których mają być używane domyślnie, jeśli są już zainstalowane.

Renderowanie danych widżetu

Po zdefiniowaniu elementu ComplicationSlot, jego granic i elementu Complication możesz użyć standardowych komponentów WFF, takich jak PartDraw, PartImagePartText, aby wyświetlić dane widżetu.

Elementy w danych Complication mają dostęp do specjalnego źródła danych: COMPLICATION, które udostępnia różne właściwości danych ustawione przez źródło danych widżetu.

Na przykład komplikacja SMALL_IMAGE może ustawiać wartości COMPLICATION.SMALL_IMAGECOMPLICATION.SMALL_IMAGE_AMBIENT. Zamiast zasobu w elemencie Image możesz użyć:

<Complication type="SMALL_IMAGE">
  <PartImage ...>
    <Image resource="[COMPLICATION.SMALL_IMAGE]" />
  </PartImage>
</Complication>

Każdy typ widżetu ma inny zestaw dostępnych właściwości. Pełną listę znajdziesz w dokumentacji Complication. Ten przykład pokazuje tekst z poziomu widżetu SHORT_TEXT:

<Complication type="SHORT_TEXT">
  <PartText ...>
    <Text>
      <Font ...>
        <Template>
          <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
        </Template>
      </Font>
  </PartImage>
</Complication>

Maksymalizacja użyteczności podczas renderowania komplikacji

Dodanie ComplicationSlots do tarczy zegarka może być utrudnione z kilku powodów:

  1. Istnieje wiele typów danych widżetów. Różne aplikacje mogą zapewniać jeden lub wiele z tych elementów.
  2. Każdy typ danych zegara ma nie tylko właściwości wymagane, ale też wiele właściwości opcjonalnych. Sprawdź, czy z dostępnych właściwości wykonano najbardziej przydatne renderowanie, biorąc pod uwagę różne kombinacje.

Aby rozwiązać te problemy, możesz zastosować te strategie:

  1. Obsługa wielu typów widżetów w przypadku każdego slotu. Na przykład SHORT_TEXT jest obsługiwane przez wiele źródeł danych widżetów, więc obsługa różnych typów, takich jak SHORT_TEXT RANGED_VALUE dla małych okrągłych widżetów, zwiększa zgodność.
  2. oferować różne typy widżetów na tarczy zegarka; Możesz na przykład obsługiwać RANGED_VALUEGOAL_PROGRESS w widżetach Arc na krawędzi tarczy oraz SHORT_TEXTSMALL_IMAGE w widżetach okrągłych na tarczy.
  3. Sprawdź, czy w przypadku każdego typu danych występują elementy opcjonalne. Na przykład SHORT_TEXTopcjonalnie obsługuje właściwość title i obraz. Układ renderowania dostępnych danych może się różnić w zależności od tego, czy obraz lub tytuł są dostępne.