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 atau tidak menampilkan elemen, atau memilih antara dua gaya
  • ListConfiguration: memberi pengguna berbagai opsi. Misalnya, jika tampilan jam memiliki empat gambar latar belakang berbeda yang dapat dipilih
  • ColorConfiguration: menentukan tema warna, yang dapat dipilih pengguna untuk tema pilihannya.

Opsi Boolean

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

<!-- Under WatchFace element -->
<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>

Opsi Boolean kemudian dapat digunakan dengan dua cara:

  1. Menggunakan struktur BooleanConfiguration dalam Scene tampilan jam:

    <!-- Within the main Scene of the watch face -->
    <BooleanConfiguration id="show_date">
        <BooleanOption id="TRUE">
            <!-- ...Content when date required -->
        </BooleanOption>
        <BooleanOption id="FALSE">
            <!-- ...Content when date not required -->
        </BooleanOption>
    </BooleanConfiguration>

    Perhatikan bahwa opsi konfigurasi tidak dapat disarangkan dalam penggunaannya.

  2. Atau, opsi konfigurasi dapat digunakan dalam ekspresi:

        <Expressions>
            <Expression name="my_expression">
                <!-- Use show_date as part of a more complex evaluation -->
                <![CDATA[[CONFIGURATION.show_date] == "TRUE" && [HOUR_0_23] < 15]]
            </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 menyediakan daftar gambar latar belakang yang dapat dipilih pengguna:

<!-- Under WatchFace element -->
<UserConfigurations>
    <ListConfiguration id="background_image" displayName="background_image_label"
        icon="background_option_icon"
        screenReaderText="background_image_label" defaultValue="0">
        <ListOption id="0" displayName="background0_image_label"
            screenReaderText="background0_image_label" icon="background0_icon" />
        <ListOption id="1" displayName="background1_image_label"
            screenReaderText="background1_image_label" icon="background1_icon" />
        ...
    </ListConfiguration>
</UserConfigurations>

Serupa dengan opsi boolean, ada dua cara untuk menggunakan ini:

  1. Menggunakan elemen ListConfiguration di Scene:

    <!-- Within the main Scene of the watch face -->
    <ListConfiguration id="background_image">
        <ListOption id="0">
            <!-- ...Content for option 0 -->
        </ListOption>
        <ListOption id="1">
            <!-- ...Content for option 1 -->
        </ListOption>
    </ListConfiguration>

  2. Atau, opsi konfigurasi dapat digunakan dalam ekspresi yang lebih kompleks:

        <Expressions>
            <Expression name="background_zero_and_something_else">
                <!-- Use as part of a more complex evaluation -->
                <![CDATA[[CONFIGURATION.background_image] == "0" && [HOUR_0_23] < 15]]
            </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 yang diinginkan 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, tentukan ColorConfiguration sebagai berikut:

<!-- Under WatchFace element -->
<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>

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

<AnalogClock x="0" y="0" width="450" height="450">
    <HourHand resource="hour" x="220" y="55" width="20" height="190"
        pivotX="0.5" pivotY="0.9210"
        tintColor="[CONFIGURATION.myThemeColor.0]"/>
    <MinuteHand resource="minute" x="222" y="30" width="16" height="220"
        pivotX="0.5" pivotY="0.9"
        tintColor="[CONFIGURATION.myThemeColor.1]"/>
    <SecondHand resource="second" x="226" y="20" width="8" height="245"
        pivotX="0.5" pivotY="0.8571"
        tintColor="[CONFIGURATION.myThemeColor.2]"/>
</AnalogClock>

Dalam kasus tertentu saat setiap ColorOption hanya memiliki satu warna yang ditentukan, warna tersebut juga dapat dirujuk sebagai CONFIGURATION.myThemeColor, tanpa indeks. Kemudian, pengguna dapat memilih entri tema pilihan mereka di editor tampilan jam.

Rasa

Catatan: Variasi didukung di Format Wajah Jam versi 2 dan yang lebih tinggi.

UserConfigurations memberi pengguna banyak fleksibilitas, tetapi seiring bertambahnya jumlah elemen konfigurasi yang Anda tentukan, jumlah kombinasi dapat bertambah secara signifikan.

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

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:

  1. Konfigurasi tema warna, yang memungkinkan pengguna memilih tema warna yang akan diterapkan. Anda telah menentukan dua tema, satu berwarna dan satu monokrom.
  2. Daftar latar belakang. Anda telah menentukan dua pilihan yang dapat dipilih pengguna.
  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 adalah setelan yang menurut Anda paling sesuai:

  1. Rasa sporty: Rasa ini akan terdiri dari:
    1. Tema warna cerah, untuk memberi Anda energi dan membuat Anda aktif (ID: 0)
    2. Gambar latar pertama (ID: 0)
    3. Detak jantung ditampilkan di tampilan jam sebagai referensi
    4. Slot detail yang menampilkan jumlah langkah
  2. Cita rasa yang canggih: Hal ini akan terdiri dari:
    1. Tema warna monokrom, agar cocok dengan pakaian apa pun (ID: 1)
    2. Gambar latar kedua (ID: 1)
    3. Detak jantung tidak ditampilkan di tampilan jam
    4. Slot detail tidak diaktifkan

Flavor perlu diaktifkan di watch_face_info.xml, sehingga elemen FlavorsSupported dalam file watch_face_info.xml harus disetel dengan value="true".

Setiap Ragam ditentukan dalam UserConfigurations sebagai berikut:

<!-- Under UserConfigurations -->
<Flavors defaultValue="sporty_flavor">
    <Flavor id="sporty_flavor"
        displayName="flavor_sporty_label" screenReaderText="flavor_sporty_label">
        <Configuration id="theme_color" optionId="0"/>
        <Configuration id="background_image" optionId="0"/>
        <Configuration id="show_hr" optionId="TRUE"/>
        <ComplicationSlot slotId="0">
            <DefaultProviderPolicy
                defaultSystemProvider="STEP_COUNT"
                defaultSystemProviderType="SHORT_TEXT"/>
        </ComplicationSlot>
    </Flavor>
    <Flavor id="sophisticated_flavor"
        displayName="flavor_sophisticated_label" screenReaderText="flavor_sophisticated_label">
        <Configuration id="theme_color" optionId="1"/>
        <Configuration id="background_image" optionId="1"/>
        <Configuration id="show_hr" 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>