Menentukan konfigurasi pengguna

UserConfigurations memungkinkan Anda membuat opsi yang dapat dipilih pengguna. Anda dapat menyesuaikan tampilan elemen tampilan jam berdasarkan nilai yang dipilih.

Opsi konfigurasi pengguna dapat berupa:

  • BooleanConfiguration: biasanya digunakan untuk tempat pengguna mungkin memiliki opsi untuk menampilkan elemen atau tidak, atau memilih antara dua gaya
  • ListConfiguration: memberi pengguna berbagai opsi. Misalnya, jika tampilan jam memiliki empat gambar latar belakang yang berbeda untuk dipilih
  • ColorConfiguration: menentukan tema warna, tempat pengguna dapat memilih tema pilihan mereka.

Opsi boolean

Opsi boolean mungkin merupakan konfigurasi pengguna yang paling sederhana. Hal ini dapat didefinisikan sebagai berikut:

<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>

Opsi Boolean kemudian dapat digunakan dengan dua cara:

  1. Menggunakan struktur BooleanConfiguration dalam Scene tampilan jam:

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

    Perhatikan bahwa opsi konfigurasi tidak dapat disusun bertingkat dalam penggunaannya, sehingga hal berikut tidak valid:

    <!-- 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. Atau, opsi konfigurasi dapat digunakan dalam ekspresi:

    <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>
    

Opsi daftar

Opsi daftar berfungsi dengan cara yang sangat mirip dengan opsi boolean. Misalnya, untuk memberikan daftar gambar latar belakang yang dapat dipilih pengguna:

<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>

Serupa dengan opsi boolean, ada dua cara untuk menggunakannya:

  1. Menggunakan elemen ListConfiguration di Scene:

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. Atau, opsi konfigurasi dapat digunakan dalam ekspresi yang lebih kompleks:

    <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>
    

Tema warna

Format Tampilan Jam memungkinkan Anda menentukan tema warna melalui ColorConfiguration. Pengguna dapat memilih tema pilihan mereka dari editor tampilan jam, dan warna dari tema ini dapat muncul di seluruh definisi tampilan jam Anda.

Misalnya, untuk menentukan tema dengan dua entri dan tiga warna dalam tema:

Santai

Urban

Tentukan ColorConfiguration sebagai berikut:

<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>

Nilai ini kemudian dapat digunakan sebagai sumber data, bukan nilai warna heksadesimal. Perhatikan cara nilai indeks ditentukan untuk memilih elemen pertama, kedua, atau ketiga tema:

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

Dalam kasus khusus saat setiap ColorOption hanya memiliki satu warna yang ditentukan, Anda juga dapat mereferensikannya sebagai CONFIGURATION.myThemeColor, tanpa indeks.

INSERT ALT TEXT HERE INSERT ALT TEXT HERE

Kemudian, pengguna dapat memilih entri tema pilihan mereka di editor tampilan jam.

Rasa

Catatan: Rasa didukung pada Format Tampilan Jam versi 2 dan yang lebih tinggi.

UserConfigurations memberi pengguna banyak fleksibilitas, tetapi saat Anda meningkatkan jumlah elemen konfigurasi yang ditentukan, jumlah kombinasi dapat meningkat secara luar biasa.

Flavors memungkinkan Anda menentukan preset untuk UserConfigurations yang menurut Anda layak ditonjolkan.

Kemudian, pengguna dapat memilih dari ragam preset ini dalam aplikasi pendamping, atau terus memilih setiap nilai konfigurasi satu per satu.

Misalnya, pertimbangkan tampilan jam tempat Anda menentukan tiga setelan (elemen dalam dan detail atribut telah dihilangkan untuk kejelasan):

<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>

Anda telah menentukan:

  1. Konfigurasi tema warna, yang memungkinkan pengguna memilih tema warna yang akan diterapkan. Anda telah menentukan dua tema, satu berwarna-warni dan satu monokrom.
  2. Daftar pilihan tampilan jam. Anda telah menentukan dua pilihan, jam besar yang tebal dan jam yang terlihat lebih minimalis.
  3. Pilihan apakah akan menampilkan detak jantung pengguna di tampilan jam.

Selain itu, Anda memiliki ComplicationSlot di tampilan jam.

Anda memutuskan bahwa ada dua Flavors yang ingin Anda soroti kepada pengguna. Ada banyak kemungkinan kombinasi dari semua setelan ini, tetapi berikut setelan yang menurut Anda paling sesuai:

  1. Gaya sporty: Ini akan terdiri dari:
    1. Tema warna cerah, untuk memberi Anda energi dan membuat Anda aktif (ID: 0)
    2. Jam yang besar dan tebal, sehingga dapat dilihat saat berolahraga (ID: 0)
    3. Detak jantung yang ditampilkan di tampilan jam sebagai referensi
    4. Slot detail yang menampilkan jumlah langkah
  2. Rasa yang canggih: Ini akan terdiri dari:
    1. Tema warna monokrom, untuk mencocokkan dengan pakaian apa pun (ID: 1)
    2. Jam minimal, agar cocok dengan lingkungan apa pun (ID: 1)
    3. Tidak ada detak jantung yang ditampilkan di tampilan jam
    4. Slot detail tidak diaktifkan

Rasa memerlukan pengaktifan di watch_face_info.xml:

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

Kemudian, setiap Rasa ditentukan dalam UserConfigurations sebagai berikut:

<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>