Wyrażenia dynamiczne w Wear OS

Wear OS obsługuje dynamiczne aktualizacje informacji wyświetlanych w kafelkach i widżetach.

Za pomocą wyrażeń dynamicznych możesz powiązać dane, które pojawiają się na powierzchni Twojej aplikacji, np. kafelek lub widżet, z konkretnym źródłem danych. Przykładem takiego źródła danych są informacje o tętnie, które platforma może odczytać. Po utworzeniu tego powiązania system automatycznie zaktualizuje dane w kafelkach i widżetach.

Tworzenie dynamicznych wiązań danych

Aby utworzyć dynamiczne wiązanie danych, zdefiniuj zmienną, która korzysta z dynamicznego typu danych. Powiąż tę zmienną ze strumieniem danych, którego chcesz użyć.

Możesz np. pobrać wartości związane z zegarem systemowym i informacjami o stanie, jak pokazano w tym fragmencie kodu.

Kotlin

val systemTime = DynamicInstant.platformTimeWithSecondsPrecision()
val steps: DynamicInt32 = PlatformHealthSources.dailySteps()

Java

DynamicInstant systemTime = DynamicInstant.platformTimeWithSecondsPrecision();
DynamicInt32 steps = PlatformHealthSources.dailySteps();

Możesz też tworzyć wartości dynamiczne z wyrażeń stałych i wykonywać operacje arytmetyczne na dowolnej wartości dynamicznej, jak w tym fragmencie kodu:

Kotlin

val dynamicValue = DynamicInt32.constant(1).plus(2)

Java

DynamicInt32 dynamicValue = DynamicInt32.constant(1).plus(2)

Lista możliwych dynamicznych typów danych

Wear OS obsługuje te typy danych dynamicznych:

Typ danych możesz też przekształcać za pomocą wbudowanych funkcji, takich jak:

  • DynamicInt32 obsługuje konwersję na DynamicString za pomocą format().
  • DynamicDuration umożliwia wyodrębnianie konkretnych części, takich jak sekundy czasu trwania, jako obiekty DynamicInt32.

Używaj ograniczonej liczby wyrażeń dynamicznych na każdym ekranie

System ma ograniczoną liczbę wyrażeń dynamicznych, które może przetworzyć jednocześnie na określonym ekranie. System konwertuje dodatkowe wyrażenia dynamiczne na wartości statyczne.

Wear OS uznaje też wyrażenia stałe za wyrażenia dynamiczne. Na przykład ten fragment kodu zawiera 4 wyrażenia dynamiczne:

  1. Operacja plus().
  2. Operacja animate().
  3. Wyrażenie constant(1).
  4. Wyrażenie constant(2), podane przez wartość 2 w wyrażeniu dynamicznym plus().
DynamicInt32.constant(1).plus(2).animate()