From e03b3e6e2b9ef4dcaaf70ea14437d039e6830b14 Mon Sep 17 00:00:00 2001 From: Will Bradley <wbradley@netburner.com> Date: Wed, 12 Mar 2025 23:33:40 -0700 Subject: [PATCH] Finish sundial face --- watchface/src/main/res/drawable/hour_hand.png | Bin 0 -> 9834 bytes watchface/src/main/res/raw/watchface.xml | 664 +++++------------- 2 files changed, 192 insertions(+), 472 deletions(-) create mode 100644 watchface/src/main/res/drawable/hour_hand.png diff --git a/watchface/src/main/res/drawable/hour_hand.png b/watchface/src/main/res/drawable/hour_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..56b9eface59d0955af6ef7d881df92450df44ea7 GIT binary patch literal 9834 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 literal 0 HcmV?d00001 diff --git a/watchface/src/main/res/raw/watchface.xml b/watchface/src/main/res/raw/watchface.xml index 5fc4314..6bbb6c9 100644 --- a/watchface/src/main/res/raw/watchface.xml +++ b/watchface/src/main/res/raw/watchface.xml @@ -1,223 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <WatchFace height="450" width="450"> <Scene> - <Group height="450" name="Root" width="450" x="0" y="0"> + + <Group height="450" name="Background" width="450" x="0" y="0"> <PartDraw height="450" name="BackgroundContour" width="450" x="0" y="0"> <Ellipse height="450.0" width="450.0" x="0.0" y="0.0"> - <Stroke color="#ffd6d3c3" thickness="10.0"/> - <Fill color="#ffe6e3d3"/> + <Stroke color="#ff151515" thickness="10.0"/> + <Fill color="#ff333333"/> </Ellipse> </PartDraw> - <Group height="450" name="Wrapper" width="450" x="15" y="0"> - <PartText height="50" width="430" x="0" y="0"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="42" color="#99000000"> It is </Font> - </Text> - </PartText> - <PartText height="200" width="430" x="0" y="20"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="130" color="#ff000000"> - <Template><![CDATA[ %s ]]> - <Parameter expression=" - [HOUR_1_12] == 1 ? one : - [HOUR_1_12] == 2 ? two : - [HOUR_1_12] == 3 ? three : - [HOUR_1_12] == 4 ? four : - [HOUR_1_12] == 5 ? five : - [HOUR_1_12] == 6 ? six : - [HOUR_1_12] == 7 ? seven : - [HOUR_1_12] == 8 ? eight : - [HOUR_1_12] == 9 ? nine : - [HOUR_1_12] == 10 ? ten : - [HOUR_1_12] == 11 ? eleven : - [HOUR_1_12] == 12 ? twelve : - [HOUR_1_12_Z]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText height="180" width="450" x="0" y="110"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="70" color="#cc000000"> - <Template><![CDATA[ %s ]]> - <Parameter expression=" - [MINUTE] == 0 ? o'clock : - [MINUTE] == 1 ? "oh-one" : - [MINUTE] == 2 ? "oh-two" : - [MINUTE] == 3 ? "oh-three" : - [MINUTE] == 4 ? "oh-four" : - [MINUTE] == 5 ? "oh-five" : - [MINUTE] == 6 ? "oh-six" : - [MINUTE] == 7 ? "oh-seven" : - [MINUTE] == 8 ? "oh-eight" : - [MINUTE] == 9 ? "oh-nine" : - [MINUTE] == 10 ? ten : - [MINUTE] == 11 ? eleven : - [MINUTE] == 12 ? twelve : - [MINUTE] == 13 ? thirteen : - [MINUTE] == 14 ? fourteen : - [MINUTE] == 15 ? fifteen : - [MINUTE] == 16 ? sixteen : - [MINUTE] == 17 ? seventeen : - [MINUTE] == 18 ? eighteen : - [MINUTE] == 19 ? nineteen : - [MINUTE] == 20 ? twenty : - [MINUTE] == 21 ? "twenty-one" : - [MINUTE] == 22 ? "twenty-two" : - [MINUTE] == 23 ? "twenty-three" : - [MINUTE] == 24 ? "twenty-four" : - [MINUTE] == 25 ? "twenty-five" : - [MINUTE] == 26 ? "twenty-six" : - [MINUTE] == 27 ? "twenty-seven" : - [MINUTE] == 28 ? "twenty-eight" : - [MINUTE] == 29 ? "twenty-nine" : - [MINUTE] == 30 ? thirty : - [MINUTE] == 31 ? "thirty-one" : - [MINUTE] == 32 ? "thirty-two" : - [MINUTE] == 33 ? "thirty-three" : - [MINUTE] == 34 ? "thirty-four" : - [MINUTE] == 35 ? "thirty-five" : - [MINUTE] == 36 ? "thirty-six" : - [MINUTE] == 37 ? "thirty-seven" : - [MINUTE] == 38 ? "thirty-eight" : - [MINUTE] == 39 ? "thirty-nine" : - [MINUTE] == 40 ? forty : - [MINUTE] == 41 ? "forty-one" : - [MINUTE] == 42 ? "forty-two" : - [MINUTE] == 43 ? "forty-three" : - [MINUTE] == 44 ? "forty-four" : - [MINUTE] == 45 ? "forty-five" : - [MINUTE] == 46 ? "forty-six" : - [MINUTE] == 47 ? "forty-seven" : - [MINUTE] == 48 ? "forty-eight" : - [MINUTE] == 49 ? "forty-nine" : - [MINUTE] == 50 ? fifty : - [MINUTE] == 51 ? "fifty-one" : - [MINUTE] == 52 ? "fifty-two" : - [MINUTE] == 53 ? "fifty-three" : - [MINUTE] == 54 ? "fifty-four" : - [MINUTE] == 55 ? "fifty-five" : - [MINUTE] == 56 ? "fifty-six" : - [MINUTE] == 57 ? "fifty-seven" : - [MINUTE] == 58 ? "fifty-eight" : - [MINUTE] == 59 ? "fifty-nine" : - [MINUTE] == 60 ? sixty : - [MINUTE_Z]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText height="75" width="430" x="0" y="225"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="36" color="#aa000000"> - <Template><![CDATA[ and %s %s ]]> - <Parameter expression=" - [SECOND] == 0 ? zero : - [SECOND] == 1 ? one : - [SECOND] == 2 ? two : - [SECOND] == 3 ? three : - [SECOND] == 4 ? four : - [SECOND] == 5 ? five : - [SECOND] == 6 ? six : - [SECOND] == 7 ? seven : - [SECOND] == 8 ? eight : - [SECOND] == 9 ? nine : - [SECOND] == 10 ? ten : - [SECOND] == 11 ? eleven : - [SECOND] == 12 ? twelve : - [SECOND] == 13 ? thirteen : - [SECOND] == 14 ? fourteen : - [SECOND] == 15 ? fifteen : - [SECOND] == 16 ? sixteen : - [SECOND] == 17 ? seventeen : - [SECOND] == 18 ? eighteen : - [SECOND] == 19 ? nineteen : - [SECOND] == 20 ? twenty : - [SECOND] == 21 ? "twenty-one" : - [SECOND] == 22 ? "twenty-two" : - [SECOND] == 23 ? "twenty-three" : - [SECOND] == 24 ? "twenty-four" : - [SECOND] == 25 ? "twenty-five" : - [SECOND] == 26 ? "twenty-six" : - [SECOND] == 27 ? "twenty-seven" : - [SECOND] == 28 ? "twenty-eight" : - [SECOND] == 29 ? "twenty-nine" : - [SECOND] == 30 ? thirty : - [SECOND] == 31 ? "thirty-one" : - [SECOND] == 32 ? "thirty-two" : - [SECOND] == 33 ? "thirty-three" : - [SECOND] == 34 ? "thirty-four" : - [SECOND] == 35 ? "thirty-five" : - [SECOND] == 36 ? "thirty-six" : - [SECOND] == 37 ? "thirty-seven" : - [SECOND] == 38 ? "thirty-eight" : - [SECOND] == 39 ? "thirty-nine" : - [SECOND] == 40 ? forty : - [SECOND] == 41 ? "forty-one" : - [SECOND] == 42 ? "forty-two" : - [SECOND] == 43 ? "forty-three" : - [SECOND] == 44 ? "forty-four" : - [SECOND] == 45 ? "forty-five" : - [SECOND] == 46 ? "forty-six" : - [SECOND] == 47 ? "forty-seven" : - [SECOND] == 48 ? "forty-eight" : - [SECOND] == 49 ? "forty-nine" : - [SECOND] == 50 ? fifty : - [SECOND] == 51 ? "fifty-one" : - [SECOND] == 52 ? "fifty-two" : - [SECOND] == 53 ? "fifty-three" : - [SECOND] == 54 ? "fifty-four" : - [SECOND] == 55 ? "fifty-five" : - [SECOND] == 56 ? "fifty-six" : - [SECOND] == 57 ? "fifty-seven" : - [SECOND] == 58 ? "fifty-eight" : - [SECOND] == 59 ? "fifty-nine" : - [SECOND] == 60 ? sixty : - [SECOND_Z]"/> - <Parameter expression="[SECOND] == 1 ? second : seconds"/> - </Template> - </Font> - </Text> - </PartText> - <PartText height="50" width="430" x="0" y="275"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="36" color="#99000000"> - <Template><![CDATA[ in the %s ]]> - <Parameter expression=" - [HOUR_1_24] < 12 ? morning : - [HOUR_1_24] < 17 ? afternoon : - evening"/> - </Template> - </Font> - </Text> - </PartText> - <PartText height="50" width="430" x="0" y="330"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="36" color="#66000000"> - <Template><![CDATA[ %s ]]> - <Parameter expression="[DAY_OF_WEEK_F]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText height="50" width="430" x="0" y="365"> - <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> - <Text> - <Font family="anaktoria" size="36" color="#66000000"> - <Template><![CDATA[ %s %s ]]> - <Parameter expression="[MONTH_F]"/> - <Parameter expression="[DAY_Z]"/> - </Template> - </Font> - </Text> - </PartText> - </Group> </Group> <ComplicationSlot @@ -225,7 +16,7 @@ width="450" height="450" slotId="0" name="ring_complication" displayName="Ring" - supportedTypes="RANGED_VALUE"> + supportedTypes="RANGED_VALUE EMPTY"> <!-- There is no guarantee that the primaryProvider component name is available on the device. Therefore defaultSystemProvider is mandatory in @@ -268,277 +59,206 @@ <Stroke color="#ffff0000" thickness="10.0"/> </Arc> --> - <Complication type="RANGED_VALUE"> - <Group name="ranged_value_ring_ambient" x="0" y="0" width="450" height="450" alpha="255"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <PartDraw x="0" y="0" height="450" width="450"> - <Arc direction="COUNTER_CLOCKWISE" startAngle="-150" endAngle="150" centerX="225" centerY="225" width="450" height="450"> - <Stroke color="[CONFIGURATION.themeColor.3]" cap="ROUND" thickness="40" /> - </Arc> - </PartDraw> - <PartDraw x="0" y="0" height="450" width="450"> - <Arc direction="COUNTER_CLOCKWISE" startAngle="-150" endAngle="150" centerX="225" centerY="225" width="450" height="450"> - <Transform target="endAngle" value="-150 + (((clamp(([COMPLICATION.RANGED_VALUE_VALUE]), ([COMPLICATION.RANGED_VALUE_MIN]), ([COMPLICATION.RANGED_VALUE_MAX])) - ([COMPLICATION.RANGED_VALUE_MIN])) / (([COMPLICATION.RANGED_VALUE_MAX]) - ([COMPLICATION.RANGED_VALUE_MIN]))) * (300))" /> - <Stroke color="#66000066" cap="ROUND" thickness="20" /> - </Arc> - </PartDraw> - </Group> - <Group name="ranged_value_ring" x="0" y="0" width="450" height="450" alpha="255"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <PartDraw x="0" y="0" height="450" width="450"> - <Arc direction="COUNTER_CLOCKWISE" startAngle="-150" endAngle="150" centerX="225" centerY="225" width="450" height="450"> - <Stroke color="[CONFIGURATION.themeColor.0]" cap="ROUND" thickness="40" /> - </Arc> - </PartDraw> - <PartDraw x="0" y="0" height="450" width="450"> - <Arc direction="COUNTER_CLOCKWISE" startAngle="-150" endAngle="150" centerX="225" centerY="225" width="450" height="450"> - <Transform target="endAngle" value="-150 + (((clamp(([COMPLICATION.RANGED_VALUE_VALUE]), ([COMPLICATION.RANGED_VALUE_MIN]), ([COMPLICATION.RANGED_VALUE_MAX])) - ([COMPLICATION.RANGED_VALUE_MIN])) / (([COMPLICATION.RANGED_VALUE_MAX]) - ([COMPLICATION.RANGED_VALUE_MIN]))) * (300))" /> - <Stroke color="#66000066" cap="ROUND" thickness="20" /> - </Arc> - </PartDraw> - </Group> + <Complication type="EMPTY"> + <PartText height="50" width="450" x="0" y="300"> + <Text> + <Font family="roboto" size="30" color="#ffe2d86f"> + <Template>%s + <Parameter expression="-"/> + </Template> + </Font> + </Text> + </PartText> </Complication> - </ComplicationSlot> - - <ComplicationSlot - x="388" y="195" - width="60" height="60" - slotId="1" - name="right_complication" displayName="Right" - supportedTypes="RANGED_VALUE"> - <!-- - There is no guarantee that the primaryProvider component name is - available on the device. Therefore defaultSystemProvider is mandatory in - DefaultSystemProvider, to provide a fallback. - System providers are listed here: https://developer.android.com/reference/android/support/wearable/complications/SystemProviders.html - --> - <DefaultProviderPolicy - primaryProvider="com.fitbit.FitbitMobile/com.fitbit.complications.calories.CaloriesComplicationDataSourceService" - primaryProviderType="RANGED_VALUE" - defaultSystemProvider="STEP_COUNT" - defaultSystemProviderType="RANGED_VALUE" - /> - <!-- - Several different bounding shapes are supported in WFF, see: - https://developer.android.com/training/wearables/wff/complication/bounding - This example= only demonstrates a round complication. - --> - <BoundingOval x="0" y="0" width="60" height="60" outlinePadding="2" /> - - <!-- - Basic example of a Ranged Value complication. - - Ranged Value complications support optional data fields: - - - Text - - Title - - Monochromatic Image - - (Note that although AndroidX RangedValueComplicationData supports - containing SmallImage, Watch Face format does not expose these, so you - should use Monochromatic Image for icons.) - - At least one of these must be set. This condition and set of expressions - evaluates which combination has been provided by the data source and - renders accordingly. - --> <Complication type="RANGED_VALUE"> - <Group name="ranged_value_ring_ambient" x="0" y="0" width="60" height="60" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <PartDraw x="0" y="0" height="60" width="60"> - <Arc direction="CLOCKWISE" startAngle="-150" endAngle="150" centerX="30" centerY="30" width="50" height="50"> - <Stroke color="[CONFIGURATION.themeColor.3]" cap="ROUND" thickness="10" /> - </Arc> - </PartDraw> - <PartDraw x="0" y="0" height="60" width="60" > - <Arc direction="CLOCKWISE" startAngle="-150" endAngle="150" centerX="30" centerY="30" width="50" height="50"> - <Transform target="endAngle" value="-150 + (((clamp(([COMPLICATION.RANGED_VALUE_VALUE]), ([COMPLICATION.RANGED_VALUE_MIN]), ([COMPLICATION.RANGED_VALUE_MAX])) - ([COMPLICATION.RANGED_VALUE_MIN])) / (([COMPLICATION.RANGED_VALUE_MAX]) - ([COMPLICATION.RANGED_VALUE_MIN]))) * (300))" /> - <Stroke color="#66000000" cap="ROUND" thickness="10" /> - </Arc> - </PartDraw> - </Group> - <Group name="ranged_value_ring" x="0" y="0" width="60" height="60" alpha="255"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <PartDraw x="0" y="0" height="60" width="60"> - <Arc direction="CLOCKWISE" startAngle="-150" endAngle="150" centerX="30" centerY="30" width="50" height="50"> - <Stroke color="[CONFIGURATION.themeColor.0]" cap="ROUND" thickness="10" /> - </Arc> - </PartDraw> - <PartDraw x="0" y="0" height="60" width="60"> - <Arc direction="CLOCKWISE" startAngle="-150" endAngle="150" centerX="30" centerY="30" width="50" height="50"> - <Transform target="endAngle" value="-150 + (((clamp(([COMPLICATION.RANGED_VALUE_VALUE]), ([COMPLICATION.RANGED_VALUE_MIN]), ([COMPLICATION.RANGED_VALUE_MAX])) - ([COMPLICATION.RANGED_VALUE_MIN])) / (([COMPLICATION.RANGED_VALUE_MAX]) - ([COMPLICATION.RANGED_VALUE_MIN]))) * (300))" /> - <Stroke color="#66000000" cap="ROUND" thickness="10" /> - </Arc> - </PartDraw> - </Group> <Condition> - <!-- - Depending on which combination of Icon, Text and Title is present in - the complication will be rendered differently. - --> <Expressions> - <!-- A Title and/or Text, with optionally an image --> - <Expression name="rangedValue_maybeImage_textAndOrTitle"> - <![CDATA[[COMPLICATION.TEXT] != null || [COMPLICATION.TITLE] != null]]> + <Expression name="valueIsntBlankAndIsDaytime"> + <![CDATA[[(WEATHER.IS_DAY] || ![WEATHER.IS_AVAILABLE]) && [COMPLICATION.TEXT] != null && [COMPLICATION.TEXT] != "--"]]> </Expression> - <!-- An Image present, with no Text or Title --> - <Expression name="rangedValue_image_noTextNorTitle"> - <![CDATA[[COMPLICATION.TEXT] == null && [COMPLICATION.TITLE] == null && [COMPLICATION.MONOCHROMATIC_IMAGE] != null]]> + <Expression name="valueIsntBlankAndIsNotDaytime"> + <![CDATA[([WEATHER.IS_AVAILABLE] && ![WEATHER.IS_DAY]) && [COMPLICATION.TEXT] != null && [COMPLICATION.TEXT] != "--"]]> </Expression> </Expressions> - <Compare expression="rangedValue_maybeImage_textAndOrTitle"> - <Condition> - <Expressions> - <Expression name="monochromatic_ambientImage"> - <![CDATA[[COMPLICATION.MONOCHROMATIC_IMAGE] != null && [COMPLICATION.MONOCHROMATIC_IMAGE_AMBIENT] != null]]> - </Expression> - <Expression name="monochromatic_noAmbientImage"> - <![CDATA[[COMPLICATION.MONOCHROMATIC_IMAGE] != null && [COMPLICATION.MONOCHROMATIC_IMAGE_AMBIENT] == null]]> - </Expression> - </Expressions> - <!-- - Where the complication has specified an image specifically - for ambient mode, use that, with tinting applied. - --> - <Compare expression="monochromatic_ambientImage"> - <PartImage x="21" y="44" width="18" height="18" tintColor="#66000000" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE_AMBIENT]" /> - </PartImage> - <PartImage x="21" y="44" width="18" height="18" tintColor="#66000000" alpha="255"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE]" /> - </PartImage> - </Compare> - <!-- - Where the complication hasn't specified an image specifically - for ambient mode, use the normal image, with tinting applied. - --> - <Compare expression="monochromatic_noAmbientImage"> - <PartImage x="21" y="44" width="18" height="18" tintColor="#66000000" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE]" /> - </PartImage> - <PartImage x="21" y="44" width="18" height="18" tintColor="#66000000" alpha="255"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE]" /> - </PartImage> - </Compare> - </Condition> + <Default> + <PartText height="50" width="430" x="0" y="300"> + <Text> + <Font family="roboto" size="30" color="#ffe2d86f"> + <Template><![CDATA[ %s ]]> + <Parameter expression="n/a"/> + </Template> + </Font> + </Text> + </PartText> + </Default> + <Compare expression="valueIsntBlankAndIsDaytime"> + <Group name="ranged_value_ring" x="0" y="0" width="450" height="450" alpha="255"> +<!-- <Variant mode="AMBIENT" target="alpha" value="0" />--> + <!-- <PartDraw x="0" y="0" height="450" width="450">--> + <!-- <Arc direction="COUNTER_CLOCKWISE" startAngle="90" endAngle="-90" centerX="225" centerY="225" width="450" height="450">--> + <!-- <Stroke color="[CONFIGURATION.themeColor.0]" cap="ROUND" thickness="40" />--> + <!-- </Arc>--> + <!-- </PartDraw>--> + <PartDraw x="0" y="0" height="450" width="450"> + <Arc direction="COUNTER_CLOCKWISE" startAngle="88" endAngle="-88" centerX="225" centerY="225" width="450" height="450"> + <!-- [COMPLICATION.RANGED_VALUE_MAX]-[COMPLICATION.RANGED_VALUE_VALUE]+[HOUR_0_23_MINUTE]--> + <!-- [COMPLICATION.RANGED_VALUE_MAX]/1440*360/2 --> - <Condition> - <Expressions> - <Expression name="monochromatic_both_labels"> - <![CDATA[([COMPLICATION.TEXT] != null && [COMPLICATION.TITLE] != null)]]> - </Expression> - </Expressions> - <!-- - Both Title and Text are present, show title above text. - --> - <Compare expression="monochromatic_both_labels"> - <PartText x="0" y="32" width="60" height="20" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Text align="CENTER" ellipsis="TRUE"> - <Font family="SYNC_TO_DEVICE" size="10" weight="NORMAL" slant="NORMAL" color="#66000000"> - <Template>%s<Parameter expression="[COMPLICATION.TITLE]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText x="0" y="20" width="60" height="20" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Text align="CENTER" ellipsis="TRUE"> - <Font family="SYNC_TO_DEVICE" size="16" weight="NORMAL" slant="NORMAL" color="#66000000"> - <Template>%s<Parameter expression="[COMPLICATION.TEXT]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText x="0" y="32" width="60" height="20"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Text align="CENTER" ellipsis="TRUE"> - <Font family="SYNC_TO_DEVICE" size="10" weight="NORMAL" slant="NORMAL" color="#66000000"> - <Template>%s<Parameter expression="[COMPLICATION.TITLE]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText x="0" y="20" width="60" height="20"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Text align="CENTER" ellipsis="TRUE"> - <Font family="SYNC_TO_DEVICE" size="16" weight="NORMAL" slant="NORMAL" color="#66000000"> - <Template>%s<Parameter expression="[COMPLICATION.TEXT]"/> - </Template> - </Font> - </Text> - </PartText> - </Compare> - <!-- - Only one of Title or Text is present, show this is slightly - larger than when both are displayed. - --> - <Default> - <PartText x="0" y="0" width="60" height="60" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Text align="CENTER" ellipsis="TRUE"> - <Font family="SYNC_TO_DEVICE" size="14" weight="NORMAL" slant="NORMAL" color="#66000000"> - <!-- In this example, prefer Text over Title --> - <Template>%s<Parameter expression="[COMPLICATION.TEXT] != null ? [COMPLICATION.TEXT] : [COMPLICATION.TITLE]"/> - </Template> - </Font> - </Text> - </PartText> - <PartText x="0" y="0" width="60" height="60"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Text align="CENTER" ellipsis="TRUE"> - <Font family="SYNC_TO_DEVICE" size="14" weight="NORMAL" slant="NORMAL" color="#66000000"> - <!-- In this example, prefer Text over Title --> - <Template>%s<Parameter expression="[COMPLICATION.TEXT] != null ? [COMPLICATION.TEXT] : [COMPLICATION.TITLE]"/></Template> - </Font> - </Text> - </PartText> - </Default> - </Condition> +<!-- <Transform target="startAngle" value="([HOUR_0_23_MINUTE]*60-[COMPLICATION.RANGED_VALUE_MAX]-[COMPLICATION.RANGED_VALUE_VALUE])/1440*360" />--> +<!-- <Transform target="endAngle" value="([COMPLICATION.RANGED_VALUE_VALUE]+([HOUR_0_23_MINUTE]*60))/1440*360" />--> + + <Transform target="startAngle" value="(([HOUR_0_23_MINUTE]*60-[COMPLICATION.RANGED_VALUE_MAX]+[COMPLICATION.RANGED_VALUE_VALUE])/1440*360)" /> + <Transform target="endAngle" value="(([COMPLICATION.RANGED_VALUE_VALUE]+([HOUR_0_23_MINUTE]*60))/1440*360)" /> + <Stroke color="#ff97904a" cap="BUTT" thickness="450" /> + </Arc> + </PartDraw> + </Group> + <PartText height="50" width="430" x="0" y="300"> +<!-- <Variant mode="AMBIENT" target="alpha" value="0" />--> + <Text> + <Font family="roboto" size="30" color="#ffe2d86f"> + <Template><![CDATA[ %s,%s %s %s %s (%s %s) ]]> + <Parameter expression="round(([HOUR_0_23_MINUTE]*60-[COMPLICATION.RANGED_VALUE_MAX]+[COMPLICATION.RANGED_VALUE_VALUE])/1440*360)"/> + <Parameter expression="round(([COMPLICATION.RANGED_VALUE_VALUE]+([HOUR_0_23_MINUTE]*60))/1440*360)"/> + <Parameter expression="[COMPLICATION.TEXT]"/> + <Parameter expression="[WEATHER.IS_DAY]"/> + <Parameter expression="[WEATHER.IS_AVAILABLE]"/> + <Parameter expression="round([COMPLICATION.RANGED_VALUE_VALUE])"/> + <Parameter expression="round([COMPLICATION.RANGED_VALUE_MAX])"/> + </Template> + </Font> + </Text> + </PartText> </Compare> - <!-- - Image is present, but no text or title, so show the image centrally - in the complication, larger then when the text or title is available - --> - <Compare expression="rangedValue_image_noTextNorTitle"> - <Condition> - <Expressions> - <Expression name="monochromatic_ambientImage"> - <![CDATA[[COMPLICATION.MONOCHROMATIC_IMAGE] != null && [COMPLICATION.MONOCHROMATIC_IMAGE_AMBIENT] != null]]> - </Expression> - <Expression name="monochromatic_noAmbientImage"> - <![CDATA[[COMPLICATION.MONOCHROMATIC_IMAGE] != null && [COMPLICATION.MONOCHROMATIC_IMAGE_AMBIENT] == null]]> - </Expression> - </Expressions> - <Compare expression="monochromatic_ambientImage"> - <PartImage x="30" y="30" width="25" height="25" tintColor="#66000000" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE_AMBIENT]" /> - </PartImage> - <PartImage x="30" y="30" width="25" height="25" tintColor="#66000000"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE]" /> - </PartImage> - </Compare> - <Compare expression="monochromatic_noAmbientImage"> - <PartImage x="30" y="30" width="25" height="25" tintColor="#66000000" alpha="0"> - <Variant mode="AMBIENT" target="alpha" value="255" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE]" /> - </PartImage> - <PartImage x="30" y="30" width="25" height="25" tintColor="#66000000"> - <Variant mode="AMBIENT" target="alpha" value="0" /> - <Image resource="[COMPLICATION.MONOCHROMATIC_IMAGE]" /> - </PartImage> - </Compare> - </Condition> + <Compare expression="valueIsntBlankAndIsNotDaytime"> + <Group name="ranged_value_ring" x="0" y="0" width="450" height="450" alpha="255"> +<!-- <Variant mode="AMBIENT" target="alpha" value="0" />--> + <!-- <PartDraw x="0" y="0" height="450" width="450">--> + <!-- <Arc direction="COUNTER_CLOCKWISE" startAngle="90" endAngle="-90" centerX="225" centerY="225" width="450" height="450">--> + <!-- <Stroke color="[CONFIGURATION.themeColor.0]" cap="ROUND" thickness="40" />--> + <!-- </Arc>--> + <!-- </PartDraw>--> + <PartDraw x="0" y="0" height="450" width="450"> + <Arc direction="CLOCKWISE" startAngle="88" endAngle="-88" centerX="225" centerY="225" width="450" height="450"> + <!-- [COMPLICATION.RANGED_VALUE_MAX]-[COMPLICATION.RANGED_VALUE_VALUE]+[HOUR_0_23_MINUTE]--> + <!-- [COMPLICATION.RANGED_VALUE_MAX]/1440*360/2 --> + + <!-- <Transform target="startAngle" value="([HOUR_0_23_MINUTE]*60-[COMPLICATION.RANGED_VALUE_MAX]-[COMPLICATION.RANGED_VALUE_VALUE])/1440*360" />--> + <!-- <Transform target="endAngle" value="([COMPLICATION.RANGED_VALUE_VALUE]+([HOUR_0_23_MINUTE]*60))/1440*360" />--> + + <Transform target="startAngle" value="(([HOUR_0_23_MINUTE]*60-[COMPLICATION.RANGED_VALUE_MAX]+[COMPLICATION.RANGED_VALUE_VALUE])/1440*360)" /> + <Transform target="endAngle" value="(([COMPLICATION.RANGED_VALUE_VALUE]+([HOUR_0_23_MINUTE]*60))/1440*360)" /> + <Stroke color="#6697904a" cap="BUTT" thickness="450" /> + </Arc> + </PartDraw> + </Group> + <PartText height="50" width="430" x="0" y="300"> +<!-- <Variant mode="AMBIENT" target="alpha" value="0" />--> + <Text> + <Font family="roboto" size="30" color="#66ff0000"> + <Template><![CDATA[ %s,%s %s %s %s (%s %s) ]]> + <Parameter expression="round(([HOUR_0_23_MINUTE]*60-[COMPLICATION.RANGED_VALUE_MAX]+[COMPLICATION.RANGED_VALUE_VALUE])/1440*360)"/> + <Parameter expression="round(([COMPLICATION.RANGED_VALUE_VALUE]+([HOUR_0_23_MINUTE]*60))/1440*360)"/> + <Parameter expression="[COMPLICATION.TEXT]"/> + <Parameter expression="[WEATHER.IS_DAY]"/> + <Parameter expression="[WEATHER.IS_AVAILABLE]"/> + <Parameter expression="round([COMPLICATION.RANGED_VALUE_VALUE])"/> + <Parameter expression="round([COMPLICATION.RANGED_VALUE_MAX])"/> + </Template> + </Font> + </Text> + </PartText> </Compare> </Condition> </Complication> </ComplicationSlot> + <Group height="450" name="Root" width="450" x="0" y="0"> + +<!-- <AnalogClock x="0" y="0" width="450" height="450">--> +<!-- <!–<Variant mode="AMBIENT" target="alpha" value="192" />–>--> +<!-- <!– Shadows –>--> +<!-- <HourHand resource="hour" x="220" y="55" width="20" height="190" pivotX="0.5"--> +<!-- pivotY="0.92105263157" tintColor="[CONFIGURATION.themeColor.4]">--> +<!-- <Variant mode="AMBIENT" target="alpha" value="0" />--> +<!-- </HourHand>--> +<!-- <!– Main hands –>--> +<!-- <HourHand resource="hour" x="215" y="50" width="20" height="190" pivotX="0.5"--> +<!-- pivotY="0.92105263157" tintColor="[CONFIGURATION.themeColor.0]">--> +<!-- </HourHand>--> +<!-- </AnalogClock>--> + + + +<!-- <Group x="65" y="65" width="320" height="320" scaleX="0.95" scaleY="0.95" name="minutes" alpha="255">--> +<!-- <Transform target="angle" value="[SECOND] * 15">--> +<!-- <Animation duration="1" angleDirection="CLOCKWISE" />--> +<!-- </Transform>--> +<!-- <PartDraw x="0" y="0" width="320" height="320" name="empty" alpha="255">--> +<!-- <Rectangle x="0" y="0" width="64" height="64">--> +<!-- <Fill color="#ff00ffff" />--> +<!-- </Rectangle>--> +<!-- </PartDraw>--> +<!-- </Group>--> + + <DigitalClock x="0" y="0" width="450" height="450"> + <!-- For further attributes see: + https://developer.android.com/training/wearables/wff/clock/time-text --> + <!-- SYNC_TO_DEVICE specifies to respect the device 12/24h setting --> + <!-- Interactive mode version--> + <TimeText format="hh" hourFormat="SYNC_TO_DEVICE" align="START" x="20" y="120" width="225" height="200" alpha="255"> + <Font family="SYNC_TO_DEVICE" size="120" weight="NORMAL" slant="NORMAL" color="#99ffffff"/> + </TimeText> + <TimeText format="mm" hourFormat="SYNC_TO_DEVICE" align="END" x="205" y="120" width="225" height="200" alpha="255"> + <Font family="SYNC_TO_DEVICE" size="120" weight="NORMAL" slant="NORMAL" color="#99ffffff"/> + </TimeText> + </DigitalClock> + + <Group x="175" y="113" width="100" height="224" name="minutes" angle="0" alpha="255"> + <Transform target="angle" value="([SECONDS_IN_DAY]*0.0041667+180)"> + <Animation duration="1" angleDirection="CLOCKWISE" /> + </Transform> + <PartImage x="0" y="0" width="100" height="224" alpha="255" name="HourHand2"> + <Image resource="hour_hand" /> + </PartImage> + </Group> + + <Group height="450" name="Wrapper" width="450" x="15" y="0"> + +<!-- <PartDraw x="0" y="0" width="450" height="450"--> +<!-- pivotX="115" pivotY="115" angle="0" alpha="255"--> +<!-- name="HourHand3" >--> +<!-- <Ellipse height="120" width="100" x="15" y="15">--> +<!-- <Stroke color="#ff00ff00" thickness="10.0"/>--> +<!-- <Fill color="#ff00ff00"/>--> +<!-- </Ellipse>--> +<!-- </PartDraw>--> + +<!-- <PartText height="50" width="430" x="0" y="330">--> +<!-- <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/>--> +<!-- <Text>--> +<!-- <Font family="roboto" size="36" color="#66ffffff">--> +<!-- <Template><![CDATA[ %d s %s h %s sd %s sdh ]]>--> +<!-- <Parameter expression="[SECOND]"/> <!– [DAY_OF_WEEK_F] –>--> +<!-- <Parameter expression="[HOUR_0_23_MINUTE]"/> <!– [DAY_OF_WEEK_F] –>--> +<!-- <Parameter expression="[SECONDS_IN_DAY]"/> <!– [DAY_OF_WEEK_F] –>--> +<!-- <Parameter expression="([SECONDS_IN_DAY]*0.0041667+180)"/> <!– [DAY_OF_WEEK_F] –>--> +<!-- </Template>--> +<!-- </Font>--> +<!-- </Text>--> +<!-- </PartText>--> + <PartText height="50" width="430" x="0" y="365"> + <Localization calendar="GREGORIAN" timeZone="SYNC_TO_DEVICE"/> + <Text> + <Font family="roboto" size="36" color="#66ffffff"> + <Template><![CDATA[ %s %s ]]> + <Parameter expression="[MONTH_F]"/> + <Parameter expression="[DAY_Z]"/> + </Template> + </Font> + </Text> + </PartText> + </Group> + </Group> </Scene> </WatchFace>