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

تتيح لك 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، بدون الفهرس. يمكن للمستخدم بعد ذلك اختيار إدخال التصميم الذي يريده في محرّر خلفية شاشة الساعة.

النكهات

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

UserConfigurations توفّر للمستخدم مرونة كبيرة، ولكن مع زيادة عدد عناصر الضبط التي تحدّدها، يمكن أن يزداد عدد المجموعات بشكل كبير.

تتيح لك Flavors تحديد إعدادات مسبقة لـ UserConfigurations التي تعتقد أنّها تستحقّ تسليط الضوء عليها.

يمكن للمستخدم بعد ذلك الاختيار من بين هذه النكهات المضبوطة مسبقًا ضمن التطبيق المصاحب، أو مواصلة اختيار كل قيمة إعداد على حدة.

على سبيل المثال، لنفترض أنّك تريد ضبط ثلاثة إعدادات لخلفية شاشة الساعة:

  1. إعدادات نسق الألوان التي تتيح للمستخدم اختيار نسق الألوان الذي يريد تطبيقه. لقد حدّدت مظهرَين، أحدهما ملوّن والآخر أحادي اللون.
  2. قائمة بالخلفيات لقد حدّدت خيارَين يمكن للمستخدم الاختيار من بينهما.
  3. خيار تحديد ما إذا كان سيتم عرض معدّل نبضات قلب المستخدم على خلفية شاشة الساعة

بالإضافة إلى ذلك، يظهر رمز ComplicationSlot على خلفية شاشة الساعة.

قرّرت أنّه هناك علامتان Flavors تريد إبرازهما للمستخدم. هناك العديد من المجموعات المحتملة الأخرى لكل هذه الإعدادات، ولكن هذه هي المجموعات التي تعتقد أنّها الأفضل:

  1. نكهة رياضية: ستتألف من:
    1. مظهر الألوان الزاهية لتنشيطك وتشجيعك على الحركة (المعرّف: 0)
    2. صورة الخلفية الأولى (المعرّف: 0)
    3. عرض معدّل نبضات القلب على خلفية شاشة الساعة كمرجع
    4. مساحة إضافة تعرض عدد الخطوات
  2. نكهة معقّدة: تتألف من:
    1. نسق الألوان الأحادية الذي يتناسب مع أي ملابس (المعرّف: 1)
    2. صورة الخلفية الثانية (المعرّف: 1)
    3. عدم ظهور معدّل نبضات القلب على خلفية شاشة الساعة
    4. لم يتم تفعيل خانة الإضافة

تتطلّب النكهات تفعيلها في watch_face_info.xml، لذا يجب ضبط العنصر FlavorsSupported في ملف watch_face_info.xml على value="true".

يتم تحديد كل نكهة ضمن 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>