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

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

گزینه های پیکربندی کاربر می تواند به صورت زیر باشد:

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

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

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

<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"
        defaultValue="TRUE"
    />
  </UserConfigurations>
  ...
</WatchFace>

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

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

    <Scene>
        <BooleanConfiguration id="show_date">
            <BooleanOption id="TRUE">
            <!-- ...Content to show date -->
            </BooleanOption>
            <BooleanOption id="FALSE">
            <!-- ...Content when date not required -->
            </BooleanOption>
        </BooleanConfiguration>
    </Scene>
    

    توجه داشته باشید که گزینه های پیکربندی را نمی توان در استفاده از آنها تودرتو کرد، بنابراین موارد زیر معتبر نیستند :

    <!-- Will not work -->
    <!-- <Scene>
      <BooleanConfiguration id="show_date">
        <BooleanOption id="TRUE">
          <BooleanConfiguration id="show_time">
            <BooleanOption id="TRUE">
              Content intended for when show_date and show_time both set to TRUE
            </BooleanOption>
          </BooleanConfiguration>
        </BooleanOption>
      </BooleanConfiguration>
    </Scene> -->
    
  2. همچنین، گزینه پیکربندی را می توان در عبارات استفاده کرد:

    <Condition>
    <Expressions>
        <Expression name="my_expression">
            <!-- Use show_date as part of a more complex evaluation -->
            <![CDATA[[CONFIGURATION.show_date] == "TRUE" && ... ]]>
        </Expression>
        </Expressions>
        <Compare expression="my_expression">
            <!-- Content goes here -->
        </Compare>
    </Condition>
    

گزینه ها را فهرست کنید

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

<ListConfiguration id="bg_img" displayName="bg_img_lbl" icon="bg_img_ico"
    screenReaderText="bg_img_lbl" defaultValue="0">
  <ListOption id="0" displayName="bg0_lbl" screenReaderText="b0_lbl" icon="bg0_ico" />
  <ListOption id="1" displayName="bg1_lbl" screenReaderText="bg1_lbl" icon="bg1_ico" />
  ...
</ListConfiguration>

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

  1. استفاده از عنصر ListConfiguration در Scene :

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. از طرف دیگر، گزینه پیکربندی را می توان در عبارات پیچیده تر استفاده کرد:

    <Condition>
      <Expressions>
          <Expression name="background_zero_and_something_else">
            <!-- Use bg_img as part of a more complex evaluation -->
            <![CDATA[[CONFIGURATION.bg_img] == "0" && ... ]]>
          </Expression>
        </Expressions>
        <Compare expression="background_zero_and_something_else">
            <!-- Content goes here -->
        </Compare>
    </Condition>
    

تم های رنگی

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

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

آرام

شهری

ColorConfiguration را به صورت زیر تعریف کنید:

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

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

<HourHand resource="hour" ... tintColor="[CONFIGURATION.myThemeColor.0]" />
<MinuteHand resource="minute" ... tintColor="[CONFIGURATION.myThemeColor.1]" />
<SecondHand resource="second" ... tintColor="[CONFIGURATION.myThemeColor.2]" />

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

متن جایگزین را در اینجا درج کنیدمتن جایگزین را در اینجا درج کنید

سپس کاربر می تواند موضوع مورد نظر خود را در ویرایشگر صفحه ساعت انتخاب کند.

طعم ها

توجه : طعم‌ها در نسخه 2 و بالاتر از فرمت Watch Face پشتیبانی می‌شوند.

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

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

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

برای مثال، یک صفحه ساعت را در نظر بگیرید که در آن سه تنظیمات را تعریف می‌کنید (عناصر داخلی و جزئیات ویژگی‌ها برای وضوح حذف شده‌اند):

<UserConfigurations>
  <ColorConfiguration id="themeColor" ...>
    <ColorOption id="0" displayName="bright_label" ... />
    <ColorOption id="1" displayName="monochrome_label" ... />
  </ColorConfiguration>
  <ListConfiguration id="clockAppearance" ... >
    <ListOption id="0" displayName="big_and_bold_label" ... />
    <ListrOption id="1" displayName="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" encoding="utf-8"?>
<WatchFaceInfo>
    ...
    <MultipleInstancesAllowed value="true" />
    <FlavorsSupported value="true" />
</WatchFaceInfo>

سپس، هر طعم در UserConfigurations به صورت زیر تعریف می شود:

<Flavors defaultValue="sportyFlavor">
  <Flavor id="sportyFlavor" ... >
    <Configuration id="themeColor" optionId="0"/>
    <Configuration id="clockAppearance" optionId="0"/>
    <Configuration id="showHr" optionId="TRUE"/>
    <ComplicationSlot slotId="0">
      <DefaultProviderPolicy
              defaultSystemProvider="STEP_COUNT"
              defaultSystemProviderType="SHORT_TEXT"/>
    </ComplicationSlot>
  </Flavor>
  <Flavor id="sophisticatedFlavor" ... >
    <Configuration id="themeColor" optionId="1"/>
    <Configuration id="clockAppearance" optionId="1"/>
    <Configuration id="showHr" 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>