Kullanıcı yapılandırmalarını tanımlama

UserConfigurations, kullanıcının aralarından seçim yapabileceği seçenekler oluşturmanıza olanak tanır. Kadran öğelerinin görünümünü, seçilen değerlere göre ayarlayabilirsiniz.

Kullanıcı yapılandırması seçenekleri şunlar olabilir:

  • BooleanConfiguration: Genellikle kullanıcının bir öğeyi gösterme veya göstermeme seçeneği olduğunda ya da iki stil arasında seçim yapması gerektiğinde kullanılır.
  • ListConfiguration: Kullanıcıya çeşitli seçenekler sunar. Örneğin, kadrandan seçilebilecek dört farklı arka plan resmi varsa
  • ColorConfiguration: Kullanıcının tercih ettiği temayı seçebileceği renk temalarını tanımlar.

Boole seçenekleri

Boole seçenekleri, kullanıcı yapılandırmaları arasında belki de en basit olanıdır. Bunlar aşağıdaki gibi tanımlanabilir:

<WatchFace ...>
  <UserConfigurations>
   <!-- show_date and show_date_label defined in res/values/strings.xml -->
    <BooleanConfiguration id="show_date"
        displayName="show_date_label"
        screenReaderText="show_date_label"
        defaultValue="TRUE"
    />
  </UserConfigurations>
  ...
</WatchFace>

Boole seçenekleri daha sonra iki şekilde kullanılabilir:

  1. Scene kadranında BooleanConfiguration yapısını kullanarak:

    <Scene>
        <BooleanConfiguration id="show_date">
            <BooleanOption id="TRUE">
            <!-- ...Content to show date -->
            </BooleanOption>
            <BooleanOption id="FALSE">
            <!-- ...Content when date not required -->
            </BooleanOption>
        </BooleanConfiguration>
    </Scene>
    

    Yapılandırma seçeneklerinin kullanım sırasında iç içe yerleştirilemeyeceğini unutmayın. Bu nedenle, aşağıdakiler geçerli değildir:

    <!-- Will not work -->
    <!-- <Scene>
      <BooleanConfiguration id="show_date">
        <BooleanOption id="TRUE">
          <BooleanConfiguration id="show_time">
            <BooleanOption id="TRUE">
              Content intended for when show_date and show_time both set to TRUE
            </BooleanOption>
          </BooleanConfiguration>
        </BooleanOption>
      </BooleanConfiguration>
    </Scene> -->
    
  2. Alternatif olarak yapılandırma seçeneği ifadelerde de kullanılabilir:

    <Condition>
    <Expressions>
        <Expression name="my_expression">
            <!-- Use show_date as part of a more complex evaluation -->
            <![CDATA[[CONFIGURATION.show_date] == "TRUE" && ... ]]>
        </Expression>
        </Expressions>
        <Compare expression="my_expression">
            <!-- Content goes here -->
        </Compare>
    </Condition>
    

Liste seçenekleri

Liste seçenekleri, doğru/yanlış seçeneklere çok benzer şekilde çalışır. Örneğin, kullanıcının aralarından seçim yapabileceği arka plan resimlerinin listesini sağlamak için:

<ListConfiguration id="bg_img" displayName="bg_img_lbl" icon="bg_img_ico"
    screenReaderText="bg_img_lbl" defaultValue="0">
  <ListOption id="0" displayName="bg0_lbl" screenReaderText="b0_lbl" icon="bg0_ico" />
  <ListOption id="1" displayName="bg1_lbl" screenReaderText="bg1_lbl" icon="bg1_ico" />
  ...
</ListConfiguration>

Mantıksal seçeneklere benzer şekilde, bu seçeneği kullanmanın da iki yolu vardır:

  1. Scene içinde ListConfiguration öğesini kullanarak:

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. Alternatif olarak yapılandırma seçeneği daha karmaşık ifadelerde de kullanılabilir:

    <Condition>
      <Expressions>
          <Expression name="background_zero_and_something_else">
            <!-- Use bg_img as part of a more complex evaluation -->
            <![CDATA[[CONFIGURATION.bg_img] == "0" && ... ]]>
          </Expression>
        </Expressions>
        <Compare expression="background_zero_and_something_else">
            <!-- Content goes here -->
        </Compare>
    </Condition>
    

Renk temaları

Kadran biçimi, ColorConfiguration aracılığıyla renk temaları tanımlamanıza olanak tanır. Kullanıcılar kadran düzenleyicisinden istedikleri temayı seçebilir ve bu temadaki renkler kadran tanımınız boyunca görünebilir.

Örneğin, iki giriş ve üç renk içeren bir tema tanımlamak için:

Rahat

Urban

ColorConfiguration özelliğini aşağıdaki gibi tanımlayın:

<UserConfigurations>
  <ColorConfiguration id="myThemeColor" displayName="theme_label" defaultValue="0">
    <ColorOption id="0" displayName="relaxed_label" colors="#3083dc #f8ffe5 #7dde92" />
    <ColorOption id="1" displayName="urban_label" colors="#f4b393 #fc60a8 #7a28cb" />
  </ColorConfiguration>
</UserConfigurations>

Bu değerler daha sonra onaltılık renk değerleri yerine veri kaynakları olarak kullanılabilir. Temanın ilk, ikinci veya üçüncü öğesini seçmek için dizin değerinin nasıl belirtildiğine dikkat edin:

<HourHand resource="hour" ... tintColor="[CONFIGURATION.myThemeColor.0]" />
<MinuteHand resource="minute" ... tintColor="[CONFIGURATION.myThemeColor.1]" />
<SecondHand resource="second" ... tintColor="[CONFIGURATION.myThemeColor.2]" />

Her ColorOption için yalnızca bir rengin tanımlandığı özel durumlarda, dizin olmadan CONFIGURATION.myThemeColor olarak da referans verilebilir.

INSERT ALT TEXT HERE INSERT ALT TEXT HERE

Kullanıcı daha sonra kadran düzenleyicisinde istediği tema girişini seçebilir.

Aromalar

Not: Lezzetler, Saat Kadranı Formatı'nın 2 ve sonraki sürümlerinde desteklenir.

UserConfigurations, kullanıcıya çok fazla esneklik sağlar ancak tanımladığınız yapılandırma öğelerinin sayısını artırdıkça kombinasyon sayısı da çok fazla artabilir.

Flavors, vurgulamaya değer olduğunu düşündüğünüz UserConfigurations için ön ayar tanımlamanıza olanak tanır.

Kullanıcı, daha sonra tamamlayıcı uygulamadaki bu önceden ayarlanmış seçenekler arasından seçim yapabilir veya her yapılandırma değerini ayrı ayrı seçmeye devam edebilir.

Örneğin, üç ayar tanımladığınız bir kadran düşünün (anlaşılır olması için iç öğeler ve özelliklerin ayrıntıları atlanmıştır):

<UserConfigurations>
  <ColorConfiguration id="themeColor" ...>
    <ColorOption id="0" displayName="bright_label" ... />
    <ColorOption id="1" displayName="monochrome_label" ... />
  </ColorConfiguration>
  <ListConfiguration id="clockAppearance" ... >
    <ListOption id="0" displayName="big_and_bold_label" ... />
    <ListrOption id="1" displayName="minimal_label" ... />
  </ListConfiguration>
  <BooleanConfiguration id="showHr" ... />
</UserConfigurations>

Şunları tanımladınız:

  1. Kullanıcının hangi renk temasını uygulayacağını seçmesine olanak tanıyan bir renk teması yapılandırması. Biri renkli, diğeri tek renkli olmak üzere iki tema tanımladınız.
  2. Saat görünümü seçeneklerinin listesi. Büyük ve kalın bir saat ile daha minimal bir saat olmak üzere iki seçenek tanımladınız.
  3. Kullanıcının nabzının kadranda gösterilip gösterilmeyeceğini seçme.

Ayrıca, kadranda ComplicationSlot simgesi gösterilir.

Kullanıcıya vurgulamak istediğiniz iki Flavors olduğunu düşünün. Tüm bu ayarların daha birçok kombinasyonu vardır ancak en iyi sonucu alacağınızı düşündüğünüz kombinasyonlar şunlardır:

  1. Spor aroması: Şunları içerir:
    1. Enerjinizi yükseltecek ve sizi harekete geçirecek parlak renk teması (No: 0)
    2. Egzersiz yaparken görülebilmesi için büyük ve kalın bir saat (ID: 0)
    3. Referans olarak kadranda gösterilen nabız
    4. Adım sayısını gösteren komplikasyon alanı
  2. Sofistike bir lezzet: Bu, aşağıdakilerden oluşur:
    1. Her kıyafete uyacak tek renkli renk teması (No: 1)
    2. Her ortama uyum sağlayacak minimal saat (ID: 1)
    3. Kadranınızda nabız gösterilmiyor
    4. Komplikasyon yuvası etkin değil

Lezzetler watch_face_info.xml'te etkinleştirilmelidir:

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    ...
    <MultipleInstancesAllowed value="true" />
    <FlavorsSupported value="true" />
</WatchFaceInfo>

Ardından her bir lezzet, UserConfigurations içinde aşağıdaki şekilde tanımlanır:

<Flavors defaultValue="sportyFlavor">
  <Flavor id="sportyFlavor" ... >
    <Configuration id="themeColor" optionId="0"/>
    <Configuration id="clockAppearance" optionId="0"/>
    <Configuration id="showHr" optionId="TRUE"/>
    <ComplicationSlot slotId="0">
      <DefaultProviderPolicy
              defaultSystemProvider="STEP_COUNT"
              defaultSystemProviderType="SHORT_TEXT"/>
    </ComplicationSlot>
  </Flavor>
  <Flavor id="sophisticatedFlavor" ... >
    <Configuration id="themeColor" optionId="1"/>
    <Configuration id="clockAppearance" optionId="1"/>
    <Configuration id="showHr" optionId="FALSE"/>
    <ComplicationSlot slotId="0">
      <!--
        Type here is set to empty to demonstrate how to hide a complication
        slot in Flavors.
      -->
      <DefaultProviderPolicy
              defaultSystemProvider="SUNRISE_SUNSET"
              defaultSystemProviderType="EMPTY"/>
    </ComplicationSlot>
  </Flavor>
</Flavors>