定義使用者設定

UserConfigurations 可讓您建立使用者可選擇的選項。您可以根據所選值調整錶面元素的外觀。

使用者設定選項可分為:

  • BooleanConfiguration:通常用於使用者可選擇是否顯示元素,或可選擇兩種樣式
  • ListConfiguration:為使用者提供多種選項。舉例來說,如果錶面有四種不同的背景圖片可供選擇
  • ColorConfiguration:定義顏色主題,使用者可從中選取偏好的主題。

布林值選項

布林值選項可能是最簡單的使用者設定。可定義如下:

<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

布林選項的使用方式有兩種:

  1. 在錶面 Scene 中使用 BooleanConfiguration 結構:

    <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
    

    請注意,設定選項無法在使用時進行巢狀結構,因此以下設定無效

    <!-- 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. 或者,您也可以在運算式中使用設定選項:

    <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
    

清單選項

清單選項的運作方式與布林選項非常相似。舉例來說,如要提供背景圖片清單供使用者選擇,請按照下列步驟操作:

<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

與布林值選項類似,這裡也有兩種使用方式:

  1. Scene 中使用 ListConfiguration 元素:

    <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. 或者,您也可以在更複雜的運算式中使用設定選項:

    <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
    

顏色主題

錶面格式可讓您透過 ColorConfiguration 定義色彩主題。使用者可以在錶面編輯器中選取所需主題,而這個主題的顏色會顯示在錶面定義中。

舉例來說,如要定義主題,其中包含兩個項目和三種顏色:

放鬆

Urban

定義 ColorConfiguration,如下所示:

<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

這些值可用做資料來源,而非十六進位顏色值。請注意如何指定索引值,以便選取主題的第一、第二或第三個元素:

<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]" /

在每個 ColorOption 僅定義一個顏色的特殊情況下,也可以將其參照為 CONFIGURATION.myThemeColor,而不需要索引。使用者可以在錶面編輯器中選取所需主題項目。

口味

注意:錶面格式 2 以上版本支援變化版本。

UserConfigurations 為使用者提供極大的彈性,但隨著您定義的設定元素數量增加,組合數量可能會大幅增加。

Flavors 可讓您為認為值得強調的 UserConfigurations 定義預設值

使用者可以從隨附應用程式中選取這些預設變種版本,或繼續個別選擇每個設定值。

舉例來說,假設您在錶面中定義了三個設定 (為了方便說明,內部元素和屬性詳細資料已省略):

<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

您已定義:

  1. 色彩主題設定,可讓使用者選取要套用的色彩主題。您已定義兩個主題,一個是彩色主題,另一個是單色主題。
  2. 時鐘外觀選項清單。您已定義兩種選擇:大大醒目的時鐘和簡約風格的時鐘。
  3. 選擇是否要在錶面上顯示使用者的心率。

此外,錶面上有 ComplicationSlot

您決定要向使用者醒目顯示兩個 Flavors。所有這些設定有很多可能的組合,但以下是我們認為最合適的組合:

  1. 運動風:包括:
    1. 亮色主題,讓你充滿活力 (ID:0)
    2. 大大醒目的時鐘,可在運動時清楚看見 (ID:0)
    3. 錶面上顯示心率供您參考
    4. 顯示步數的小工具版位
  2. 精緻風味:這會包含:
    1. 單色主題,可搭配任何服裝 (ID:1)
    2. 最簡單的鬧鐘,可配合任何環境使用 (ID:1)
    3. 錶面上沒有顯示心率
    4. 未啟用小工具版位

變種版本必須在 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

接著,請在 UserConfigurations 中定義每個變種版本,如下所示:

<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