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 adalah 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"
   >   <  defaultVal>ue="TRUE&<quot;
    >/
  /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"
            !-- ...Con>tent to s<how date --
      >      /Bo<oleanOption
            Bool>eanOption< id="FALSE"
            !-- ...Con>tent when< date not requ>ired <--
            /BooleanOp>t<ion
      >  /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&<quot;
        BooleanOption> id=&qu<ot;TRUE"
          BooleanConfigur>ation id=<"show_time"
     >       BooleanOption id="TRUE"
              Content intended for when show_date< and show_time> both s<et to TRUE
            /B>oolea<nOption
          >/Bo<oleanConfiguration
      > < /Boolean>Option
      /BooleanConfiguration
    /Scene --
    
  2. Atau, opsi konfigurasi dapat digunakan dalam ekspresi:

    <Condition>
    <Expressions>
        <Expression name="my_expres>sion"<;
            !-- Use show_date as part of a more complex eva>luation -<-
            ![CDATA[[CONFIGURATION.show_date] &&== &quo>t;TRU<E"  ..>. ]]
    <    /Express>ion
     <   /Expressions
        Compare expres>sion=&quo<t;my_expression"
      >     < !-- Con>t<ent goes h>ere --
        /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>=&q<uot;bg_img_lbl" defaultValue="0"
  ListOption id="0" disp>lay<Name="bg0_lbl" screenReaderText="b0_lbl" icon="bg0_ico&quo>t; /
  <ListOption id=&quo>t;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>_im<g"
      ListOpt>ion i<d="0"
        !-- >Sho<w backgroun>d 0< --
      /ListOption>
      Li<stOption id="1"
        !->- S<how backgro>u<nd 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 eva>luation -<-
            ![CDATA[[CONFIGURATION.bg_im&&g] == &>quot;0&<quot;  ... >]]
      <    />Expression
     <   /Expressions
        Compare expression="background>_zero_and<_something_else"
      >     < !-- Con>t<ent goes h>ere --
        /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&qu>ot; d<efaultValue="0"
    ColorOption id="0" displayName="rela>xed_l<abel" colors="#3083dc #f8ffe5 #7dde92" /
    ColorOption id=&quo>t;1<" displayName=>&<quot;urban_label&qu>ot; 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.myT>h<emeColor.0]" /
MinuteHand resource="minute" ... tintColor=&quo>t<;[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. 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&qu>ot;< displayName=">mon<ochrome_label" ... /
  /ColorConfigura>tion
<  ListConfiguration id="clockAppearance" ... 
>    L<istOption id="0" displayName="big_an>d_b<old_label" ..>. /<
    ListOption id="1" displ>a<yName="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 harus diaktifkan di watch_face_info.xml:

<?xml version="1.0" encodin>g<="utf-8&>quot;?
WatchF<aceInfo
    ...
    MultipleInstancesAl>lowed< value="true" /
    F>l<avorsSupported> value="true" /
/WatchFaceInfo

Kemudian, setiap Rasa ditentukan dalam UserConfigurations sebagai berikut:

<Flavors defaultValue="sportyFl>avo<r"
  Flavor id="spo>rtyFl<avor" ... 
    Configuration id=">theme<Color" optionId="0"/
    Configur>ation< id="clockAppearance" optionId=&>quot;<0"/
    Configuration >id=&quo<t;showHr" optionId="TRUE"/
    ComplicationSlot slotId="0"
      DefaultProviderPolicy
            >  def<aultSystemProvide>r=&<quot;ST>EP_<COUNT"
              defaultSys>temPr<oviderType="SHORT_TEXT"/
    /Com>plica<tionSlot
  /Flavor
  Flavor id="sophisticat>edFla<vor" ... 
    Configuration id="t>hemeC<olor" optionId="1>"/<
    Configuration id="clockAppearance" optionId="1"/
    Configuration id="showHr"> option<Id="FALSE"/
    ComplicationSlot slotId="0"
      !--
        Type here is set to empty to demonstrate >how t<o hide a complica>tio<n
     > <  slot i>n Flavors.
      --
      DefaultProviderPolicy
              defaultSystemProvider="SUNRISE_SUNSET"
              defaultSystemProviderType="EMPTY"/
    /ComplicationSlot
  /Flavor
/Flavors