İfade oluşturma

WFF, aşağıdakileri etkinleştirmek için bir ifade dili kullanır:

  • Transform veya Gyro kullanarak görünümü dönüştürme
  • Condition ifadeleri aracılığıyla koşullu davranış
  • Template öğelerinde dize biçimlendirme

İfade dili, tipik operatörlerinizi ve kullanılabilecek bir dizi işlevi içeren bir komut dosyası dilidir.

İfadeler, mevcut tarih ve saat, sağlık ve fitness metrikleri ya da hava durumu gibi harici girişlere tepki vermenize olanak tanımak için köşeli parantezlerle gösterilen veri kaynaklarını kullanabilir.

İfadeler kullanılırken Transform veya Template ile Condition kullanımı arasındaki temel fark, Transform ve Template'te ifadenin bir değer (ör. kapsayıcı öğenin yeni konumu) döndürmesi gerekirken Condition'de ifadenin bir boole döndürmesi gerekmesidir.

Örneğin, bir Condition aşağıdakileri kullanabilir:

[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7

Bu işlev bir boole değeri olarak değerlendirilir ve DAY_OF_WEEK veri kaynağını kullanarak hafta sonu olup olmadığını belirler.

Wear OS cihazın ivmeölçerinin x-value değerine göre bir değeri her iki yönde de 5 dereceye kadar döndürme ifadesi gibi işlevler de desteklenir:

(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

clamp() işlevi, bir değeri iki sınır dahilinde kısıtlar.

İfadenin yeniden değerlendirilmesi

İfadelerin yeniden değerlendirilme sıklığı, ifadede kullanılan veri kaynaklarına bağlıdır. Örneğin, [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 ifadesi yalnızca yeni bir gün başladığında yeniden değerlendirilir. Ancak [SECOND] veri kaynağını kullanan bir ifade her saniye yeniden değerlendirilir.

Yeniden değerlendirme, ifadenin sonucundaki değişikliğe bağlı olarak sahnenin yeniden hesaplanması ve yeniden oluşturulmasına neden olabilir. Bu nedenle, her zaman mümkün olduğunca seyrek yeniden değerlendirme yapan veri kaynaklarını kullanmak önemlidir. Örneğin, öğleden sonra olup olmadığını belirlemek için:

// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200

// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1

İfadelerdeki yapılandırma değerleri

İşlevlere ve veri kaynaklarına ek olarak yapılandırma değerleri de kullanılabilir. Örneğin, UserConfigurations içinde showBackgroundInAfternoon adlı bir BooleanConfiguration tanımlandıysa bu ifadede kullanılabilir:

[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1