تحديد إعدادات المستخدم

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

الأنماط اللونية

يتيح لك تنسيق شاشة الساعة تحديد ألوان خلفية شاشة الساعة من خلال ColorConfiguration. يمكن للمستخدمين اختيار المظهر الذي يناسبهم من محرِّر خلفية شاشة الساعة، ويمكن أن تظهر الألوان من هذا المظهر في جميع عناصر خلفية شاشة الساعة.

على سبيل المثال، لتحديد مظهر يتضمّن إدخالَين وثلاثة ألوان في المظهر:

مريح

Urban

حدِّد 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 بدون الفهرس.

INSERT ALT TEXT HERE INSERT ALT TEXT HERE

يمكن للمستخدم بعد ذلك اختيار إدخال المظهر الذي يريده في محرِّر شاشة الساعة.

النكهات

ملاحظة: تتوفّر النُسخ المخصّصة من الإصدار 2 والإصدارات الأحدث من تنسيق خلفية شاشة الساعة.

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. مظهر الألوان الزاهية، لتنشيطك وزيادة نشاطك (المعرّف: 0)
    2. ساعة كبيرة وواضحة يمكن رؤيتها أثناء ممارسة التمارين الرياضية (رقم التعريف: 0)
    3. معدّل نبضات القلب معروض على خلفية شاشة الساعة للرجوع إليه
    4. مساحة الإضافة التي تعرض عدد الخطوات
  2. نكهة متقدّمة: سيتألف ذلك من:
    1. نسق الألوان الأحادي اللون، ليناسب أيّ أسلوب (رقم التعريف: 1)
    2. ساعة بسيطة تتناسب جيدًا مع أي بيئة (رقم التعريف: 1)
    3. عدم ظهور معدّل نبضات القلب على خلفية شاشة الساعة
    4. لم يتم تفعيل خانة الإضافة.

يجب تفعيل النكهات في watch_face_info.xml:

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    ...
    <MultipleInstancesAllowed value="true" />
    <FlavorsSupported value="true" />
</WatchFaceInfo>

بعد ذلك، يتم تحديد كل Flavor ضمن 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>