UserConfigurations を使用すると、ユーザーが選択できるオプションを作成できます。選択した値に基づいてウォッチフェイス要素の外観を調整できます。
ユーザー構成オプションは次のとおりです。
BooleanConfiguration: 通常、ユーザーが要素を表示するかどうか、または 2 つのスタイルのどちらを選択するかを選択できる場合に使用されます。ListConfiguration: ユーザーにさまざまなオプションを提供します。たとえば、ウォッチフェイスに 4 つの異なる背景画像から選択できる場合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
ブール値オプションは、次の 2 つの方法で使用できます。
ウォッチフェイス
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 --または、構成オプションを式で使用することもできます。
<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
ブール値オプションと同様に、このオプションを使用する方法は 2 つあります。
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または、構成オプションをより複雑な式で使用することもできます。
<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
カラー テーマ
Watch Face Format では、ColorConfiguration を使用してカラーテーマを定義できます。ユーザーはウォッチフェイス エディタからテーマを選択できます。このテーマの色は、ウォッチフェイスの定義全体に表示できます。
たとえば、2 つのエントリと 3 つの色を含むテーマを定義するには、次のようにします。
リラックス |
|||
都市部 |
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
これらの値は、16 進数の色の値の代わりにデータソースとして使用できます。テーマの 1 つ目、2 つ目、3 つ目の要素を選択するようにインデックス値が指定されていることに注目してください。
<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 に定義されている色が 1 つしかない場合は、インデックスなしで CONFIGURATION.myThemeColor として参照することもできます。ユーザーは、ウォッチフェイス エディタで任意のテーマエントリを選択できます。
フレーバー
注: フレーバーは、ウォッチフェイス フォーマットのバージョン 2 以降でサポートされています。
UserConfigurations はユーザーに多くの柔軟性を提供しますが、定義する構成要素の数が増えると、組み合わせの数は圧倒的に増加する可能性があります。
Flavors を使用すると、ハイライト表示する価値があると思われる UserConfigurations のプリセットを定義できます。
ユーザーは、これらのプリセット フレーバーをコンパニオン アプリ内で選択することも、各構成値を個別に選択することもできます。
たとえば、3 つの設定を定義するウォッチフェイスについて考えてみましょう(わかりやすくするため、内部要素と属性の詳細は省略しています)。
<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
次のように定義しています。
- カラーテーマの設定。ユーザーが適用するカラーテーマを選択できます。2 つのテーマ(1 つはカラフル、もう 1 つはモノクロ)を定義しました。
- 時計の外観の選択肢のリスト。大きな太字の時計と、よりミニマルな外観の時計の 2 つの選択肢を定義しました。
- ウォッチフェイスにユーザーの心拍数を表示するかどうかを選択できます。
さらに、ウォッチフェイスに ComplicationSlot があります。
ユーザーにハイライト表示する Flavors が 2 つあると判断します。これらの設定の組み合わせは他にもたくさんありますが、最も効果的と思われる組み合わせは次のとおりです。
- スポーティなフレーバー: 次のような内容になります。
- 明るい色のテーマ: 活力を与え、アクティブにします(ID: 0)
- 大きく太字の文字盤で、ワークアウト中に確認できます(ID: 0)
- ウォッチフェイスに表示される心拍数(参考情報)
- 歩数を表示するウォッチフェイスの追加機能用スロット
- 洗練されたフレーバー: 次のような要素で構成されます。
- どんな服装にも合うモノクロのカラーテーマ(ID: 1)
- あらゆる環境に適した最小限のクロック(ID: 1)
- ウォッチフェイスに心拍数が表示されない
- ウォッチフェイスの追加機能の枠が有効になっていない
フレーバーを使用するには、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