İfade oluşturma

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

  • Transform veya Gyro kullanarak görünümü dönüştürme
  • Condition ifadeleriyle koşullu davranış
  • Template öğelerinde dize biçimlendirmesi

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

İfadeler, veri kaynaklarını (köşeli parantezlerle gösterilir) kullanarak mevcut tarih ve saat, sağlık ve fitness metrikleri, hatta hava durumu gibi harici girişlere tepki vermenizi sağlar.

İfadeler kullanılırken Transform, Template ve Condition kullanımı arasındaki temel fark, Transform ve Template'nin ifadenin değer (örneğin, kapsayan öğenin yeni konumu) ile sonuçlanmasını gerektirmesidir. Condition ise ifadenin boolean ile sonuçlanmasını gerektirir.

Condition öğesinde kullanıldığında ifadeyi metin öğesi olarak belirtin. CDATA ve & gibi öğe referanslarını kullanma ihtiyacını ortadan kaldırmak için ifadeyi bir CDATA öğesine sarın."

<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>

Bu işlev, DAY_OF_WEEK veri kaynağını kullanarak bir boole değeri döndürür ve hafta sonu olup olmadığını belirler.

İşlevler de desteklenir. Örneğin, Wear OS cihazın ivmeölçerinin x-value değerine göre bir değeri her iki yönde 5 dereceye kadar döndürmeye yönelik bir ifade:

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

clamp() işlevi, bir değeri iki sınır içinde tutar.

İfade yeniden değerlendirmesi

İfadelerin yeniden değerlendirilme sıklığı, ifadelerde 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 sahne yeniden hesaplamalarına ve yeniden oluşturmaya neden olabilir. Bu nedenle, 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: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

İfadelerdeki yapılandırma değerleri

İşlevler ve veri kaynaklarının yanı sıra yapılandırma değerleri de kullanılabilir. Örneğin, UserConfigurations içinde BooleanConfiguration adlı bir showBackgroundInAfternoon tanımlanmışsa bu, bir ifadede kullanılabilir:

<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>