WFF usa un lenguaje de expresión para habilitar lo siguiente:
- Transformación de la apariencia con
Transform
oGyro
- Comportamiento condicional a través de sentencias
Condition
- Formato de cadenas en elementos
Template
El lenguaje de expresión es un lenguaje de secuencias que contiene tus operadores típicos y un rango de funciones que se pueden usar.
Las expresiones pueden usar fuentes de datos, representadas con corchetes, para permitirte reaccionar a entradas externas, como la fecha y la hora actuales, las métricas de salud y fitness, o incluso el clima.
Cuando se usan expresiones, la principal diferencia entre el uso de Transform
o Template
y Condition
es que Transform
y Template
requieren que la expresión genere un valor (por ejemplo, la nueva posición del elemento de cierre), mientras que Condition
requiere que la expresión genere un valor booleano.
Por ejemplo, un Condition
podría usar lo siguiente:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
Esto se evalúa como un valor booleano y determina si es un fin de semana o no, con la fuente de datos DAY_OF_WEEK
.
También se admiten funciones, por ejemplo, una expresión para rotar un valor hasta 5 grados en cualquier dirección, según el x-value
del acelerómetro del dispositivo Wear OS:
(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
La función clamp()
restringe un valor dentro de dos límites.
Reevaluación de la expresión
La frecuencia con la que se vuelven a evaluar las expresiones depende de las fuentes de datos que se usan en ellas. Por ejemplo, la expresión [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] ==
7
solo se vuelve a evaluar cuando comienza un nuevo día. Sin embargo, una expresión que usa la fuente de datos [SECOND]
se vuelve a evaluar cada segundo.
La reevaluación puede generar que se vuelvan a calcular y renderizar las escenas, según el cambio en el resultado de la expresión. Por lo tanto, es importante usar siempre fuentes de datos que se vuelvan a evaluar con la menor frecuencia posible. Por ejemplo, para determinar si es la tarde, haz lo siguiente:
// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200
// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
Valores de configuración en expresiones
Además de las funciones y las fuentes de datos, se pueden usar valores de configuración. Por ejemplo, si en UserConfigurations se definió un BooleanConfiguration
llamado showBackgroundInAfternoon
, se puede usar en una expresión:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1