تنظیمات کاربر را تعریف کنید

UserConfigurations به شما امکان می‌دهد گزینه‌هایی ایجاد کنید که کاربر بتواند از بین آنها انتخاب کند. می‌توانید ظاهر عناصر صفحه ساعت را بر اساس مقادیر انتخاب شده تنظیم کنید.

گزینه‌های پیکربندی کاربر می‌توانند عبارتند از:

  • BooleanConfiguration : معمولاً برای مواردی استفاده می‌شود که کاربر ممکن است گزینه نمایش یا عدم نمایش یک عنصر یا انتخاب بین دو سبک را داشته باشد.
  • ListConfiguration : طیف وسیعی از گزینه‌ها را در اختیار کاربر قرار می‌دهد. برای مثال، اگر صفحه ساعت چهار تصویر پس‌زمینه مختلف برای انتخاب داشت،
  • ColorConfiguration : تم‌های رنگی را تعریف می‌کند که کاربر می‌تواند تم مورد نظر خود را از بین آنها انتخاب کند.

گزینه‌های بولی

گزینه‌های بولی شاید ساده‌ترین پیکربندی‌های کاربر باشند. آن‌ها را می‌توان به صورت زیر تعریف کرد:

<!-- 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>

گزینه‌های بولی می‌توانند به دو روش استفاده شوند:

  1. استفاده از ساختار BooleanConfiguration در داخل Scene ساعت:

    <!-- 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>

    توجه داشته باشید که گزینه‌های پیکربندی را نمی‌توان در استفاده از آنها تودرتو کرد.

  2. به طور جایگزین، می‌توان از گزینه پیکربندی در عبارات استفاده کرد:

        <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>

گزینه‌های فهرست

گزینه‌های لیست به روشی بسیار مشابه گزینه‌های بولی کار می‌کنند. برای مثال، برای ارائه لیستی از تصاویر پس‌زمینه برای انتخاب کاربر:

<!-- 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>

مشابه گزینه‌های بولی، دو روش برای استفاده از این مورد وجود دارد:

  1. استفاده از عنصر ListConfiguration در 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. از طرف دیگر، می‌توان از گزینه پیکربندی در عبارات پیچیده‌تر استفاده کرد:

        <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>

تم‌های رنگی

قالب صفحه ساعت به شما امکان می‌دهد از طریق ColorConfiguration تم‌های رنگی تعریف کنید. کاربران می‌توانند تم مورد نظر خود را از ویرایشگر صفحه ساعت انتخاب کنند و رنگ‌های این تم می‌توانند در سراسر تعریف صفحه ساعت شما ظاهر شوند.

برای مثال، برای تعریف یک تم با دو ورودی و سه رنگ در تم، یک ColorConfiguration به صورت زیر تعریف کنید:

<!-- 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>

سپس می‌توان از این موارد به عنوان منابع داده به جای مقادیر رنگ هگزادسیمال استفاده کرد. توجه داشته باشید که چگونه مقدار شاخص برای انتخاب عنصر اول، دوم یا سوم تم تعیین شده است:

<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>

در مورد خاصی که هر ColorOption فقط یک رنگ تعریف شده دارد، می‌توان آن را به صورت CONFIGURATION.myThemeColor بدون اندیس ارجاع داد. سپس کاربر می‌تواند ورودی تم مورد نظر خود را در ویرایشگر صفحه ساعت انتخاب کند.

طعم‌ها

توجه : طعم‌ها در نسخه ۲ و بالاتر قالب واچ فیس پشتیبانی می‌شوند.

UserConfigurations انعطاف‌پذیری زیادی را در اختیار کاربر قرار می‌دهد، اما با افزایش تعداد عناصر پیکربندی که تعریف می‌کنید، تعداد ترکیب‌ها می‌تواند به طور چشمگیری افزایش یابد.

Flavors به ​​شما امکان می‌دهد تنظیمات از پیش تعیین‌شده‌ای را برای UserConfigurations تعریف کنید که فکر می‌کنید ارزش برجسته کردن دارند.

سپس کاربر می‌تواند از بین این طعم‌های از پیش تعیین‌شده در برنامه همراه، یکی را انتخاب کند، یا به انتخاب جداگانه هر مقدار پیکربندی ادامه دهد.

برای مثال، یک صفحه ساعت را در نظر بگیرید که در آن سه تنظیم تعریف می‌کنید:

  1. پیکربندی تم رنگی، که به کاربر اجازه می‌دهد تم رنگی مورد نظر خود را انتخاب کند. شما دو تم تعریف کرده‌اید، یکی رنگی و دیگری تک رنگ.
  2. فهرستی از پس‌زمینه‌ها. شما دو گزینه تعریف کرده‌اید که کاربر می‌تواند از بین آنها انتخاب کند.
  3. انتخاب اینکه آیا ضربان قلب کاربر روی صفحه ساعت نمایش داده شود یا خیر.

علاوه بر این، شما یک ComplicationSlot روی صفحه ساعت دارید.

شما تصمیم می‌گیرید که دو Flavors وجود دارد که می‌خواهید به کاربر برجسته کنید. ترکیب‌های بسیار بیشتری از همه این تنظیمات وجود دارد، اما اینها مواردی هستند که فکر می‌کنید بهترین عملکرد را دارند:

  1. یک طعم ورزشی : این شامل موارد زیر خواهد بود:
    1. تم رنگی روشن، برای انرژی بخشیدن و فعال کردن شما (شناسه: 0)
    2. اولین تصویر پس‌زمینه (شناسه: ۰)
    3. نمایش ضربان قلب روی صفحه ساعت برای مرجع
    4. شیار مربوط به پیچیدگی که تعداد گام‌ها را نشان می‌دهد
  2. یک طعم پیچیده : این شامل موارد زیر خواهد بود:
    1. تم رنگی تک رنگ، برای ست شدن با هر لباسی (شناسه: 1)
    2. تصویر پس‌زمینه دوم (شناسه: ۱)
    3. عدم نمایش ضربان قلب روی صفحه ساعت
    4. اسلات عارضه فعال نشده است

فعال‌سازی Flavorها در watch_face_info.xml الزامی است، بنابراین عنصر FlavorsSupported در فایل watch_face_info.xml باید با value="true" تنظیم شود.

هر Flavor در UserConfigurations به شرح زیر تعریف می‌شود:

<!-- 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>