تتضمّن هذه الصفحة تفاصيل حول تحسينات التطبيقات المصغّرة الاختيارية التي تتوفّر بدءًا من Android 12 (المستوى 31 من واجهة برمجة التطبيقات). هذه الميزات اختيارية، ولكنها واضحة ومباشرة لتنفيذ وتحسين تجربة الأداة للمستخدمين.
استخدام ألوان ديناميكية
بدءًا من نظام التشغيل Android 12، يمكن للتطبيق المصغّر استخدام ألوان مظاهر الجهاز للأزرار والخلفيات والمكونات الأخرى. يوفر هذا انتقالات أكثر سلاسة واتساقًا عبر التطبيقات المصغّرة المختلفة.
هناك طريقتان لتحقيق الألوان الديناميكية:
استخدِم المظهر التلقائي للنظام (
@android:style/Theme.DeviceDefault.DayNight
) في التنسيق الجذر.استخدِم مظهر Material 3 (
Theme.Material3.DynamicColors.DayNight
) من مكتبة Material Components for Android، يتوفر بدءًا من Material Components for Android v1.6.0.
بمجرد تعيين المظهر في التنسيق الجذر، يمكنك استخدام سمات اللون الشائعة في الجذر أو أي من عناصرها الثانوية لالتقاط الألوان الديناميكية.
في ما يلي بعض الأمثلة على سمات الألوان التي يمكنك استخدامها:
?attr/primary
?attr/primaryContainer
?attr/onPrimary
?attr/onPrimaryContainer
في المثال التالي باستخدام مظهر Material 3، يكون لون مظهر الجهاز "أرجواني". يتكيّف لون التمييز وخلفية التطبيق المصغّر مع الوضعَين الفاتح والداكن، كما هو موضّح في الشكلَين 1 و2.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimaryContainer"
android:theme="@style/Theme.Material3.DynamicColors.DayNight">
<ImageView
...
app:tint="?attr/colorPrimaryContainer"
android:src="@drawable/ic_partly_cloudy" />
<!-- Other widget content. -->
</LinearLayout>
التوافق مع الأنظمة القديمة للألوان الديناميكية
لا تتوفّر الألوان الديناميكية إلا على الأجهزة التي تعمل بالإصدار 12 من نظام التشغيل Android
أو الإصدارات الأحدث. لتوفير مظهر مخصّص للإصدارات الأقدم، أنشئ مظهرًا تلقائيًا
باستخدام ألوانك المخصّصة ومؤهِّل جديد (values-v31
) باستخدام
سمات المظهر التلقائية.
في ما يلي مثال على استخدام سمة Material 3:
/values/styles.xml
<resources>
<style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight">
<!-- Override default colorBackground attribute with custom color. -->
<item name="android:colorBackground">@color/my_background_color</item>
<!-- Add other colors/attributes. -->
</style>
</resources>
/values-v31/styles.xml
<resources>
<!-- Do not override any color attribute. -->
<style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight" />
</resources>
/layout/my_widget_layout.xml
<resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:background="?android:attr/colorBackground"
android:theme="@style/MyWidgetTheme" />
</resources>
تفعيل الدعم الصوتي
تسمح إجراءات التطبيقات لـ "مساعد Google" بعرض التطبيقات المصغّرة استجابةً لأوامر المستخدمين الصوتية ذات الصلة. من خلال ضبط تطبيقك المصغّر للاستجابة للأغراض المضمّنة (BIIs)، يمكن لتطبيقك عرض التطبيقات المصغّرة بشكل استباقي على مساحات العرض المزوّدة بخدمة "مساعد Google"، مثل Android وAndroid Auto. يمكن للمستخدمين تثبيت الأدوات التي يعرضها "مساعد Google" على مشغّل التطبيقات، ما يشجعهم على التفاعل في المستقبل.
على سبيل المثال، يمكنك ضبط التطبيق المصغّر لملخّص التمرين في تطبيق التمارين الرياضية لتنفيذ الطلبات الصوتية للمستخدم التي تؤدي إلى تشغيل GET_EXERCISE_OBSERVATION
BII. يعرض "مساعد Google" أداتك بشكل استباقي عندما يشغّل المستخدمون مبادرة BII هذه من خلال تقديم طلبات مثل "Ok Google، كم ميلاً جريتُه هذا الأسبوع على ExampleApp؟"
هناك العشرات من BIIS التي تغطي عدة فئات من تفاعل المستخدمين، ما يتيح لأي تطبيق Android تقريبًا تحسين التطبيقات المصغّرة للصوت. للبدء، يُرجى الاطّلاع على دمج "إجراءات التطبيقات" مع تطبيقات Android المصغّرة.
تحسين تجربة أداة اختيار التطبيقات المصغّرة في تطبيقك
يتيح لك نظام التشغيل Android 12 تحسين تجربة أداة اختيار التطبيقات المصغّرة من خلال إضافة معاينات التطبيقات المصغّرة الديناميكية وأوصاف الأدوات.
إضافة معاينات التطبيقات المصغّرة القابلة للتطوير إلى أداة اختيار التطبيقات المصغّرة
بدءًا من نظام التشغيل Android 12، أصبحت معاينة الأداة المعروضة في أداة اختيار الأدوات قابلة للتطوير. يجب توفيره كتنسيق XML مضبوط على الحجم التلقائي للأداة. في السابق، كانت معاينة التطبيق المصغّر موردًا ثابتًا قابلاً للرسم، وفي بعض الحالات تؤدي إلى معاينات تعكس بشكل غير دقيق كيفية ظهور التطبيقات المصغّرة عند إضافتها إلى الشاشة الرئيسية.
لتنفيذ معاينات التطبيقات المصغّرة القابلة للتوسّع، استخدِم السمة previewLayout
الخاصة بالعنصر appwidget-provider
لتوفير تنسيق XML بدلاً من ذلك:
<appwidget-provider
android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
وننصح باستخدام التنسيق نفسه المستخدَم في التطبيق المصغّر، مع استخدام قيم افتراضية أو قيم اختبارية. تستخدم معظم التطبيقات قيمتَي previewLayout
وinitialLayout
نفسهما. للحصول على إرشادات حول إنشاء تخطيطات معاينة دقيقة، يُرجى الاطّلاع على القسم التالي في هذه الصفحة.
ننصحك بتحديد كلّ من السمتَين previewLayout
وpreviewImage
لكي يتمكّن تطبيقك من استخدام السمة previewImage
مجددًا إذا لم يكن جهاز المستخدم متوافقًا مع السمة previewLayout
. وتكون الأولوية للسمة previewLayout
على السمة previewImage
.
الأساليب المُقترَحة لإنشاء معاينات دقيقة
لتنفيذ معاينات التطبيقات المصغّرة القابلة للتوسّع، استخدِم السمة previewLayout
للعنصر appwidget-provider
لتوفير تنسيق XML:
<appwidget-provider
...
android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
لعرض معاينة دقيقة، يمكنك تقديم التنسيق الفعلي للأداة مباشرة بالقيم الافتراضية من خلال إكمال الخطوات التالية:
إعداد
android:text="@string/my_widget_item_fake_1"
لعناصرTextView
.ضبط صورة أو رمز تلقائي أو عنصر نائب، مثل
android:src="@drawable/my_widget_icon"
، لمكوّناتImageView
.
في حال عدم استخدام القيم التلقائية، قد تعرض المعاينة قيمًا غير صحيحة أو فارغة. ومن المزايا المهمة لهذا الأسلوب أنّه يمكنك توفير محتوى معاينة مترجم.
لمعرفة الأساليب المقترحة للمعاينات الأكثر تعقيدًا التي تحتوي على ListView
أو GridView
أو StackView
، يُرجى الاطّلاع على التفاصيل لمعرفة التفاصيل، يُرجى الاطّلاع على المقالة إنشاء معاينات دقيقة تتضمّن عناصر ديناميكية.
التوافق مع الأنظمة القديمة مع معاينات التطبيقات المصغّرة القابلة للتطوير
للسماح لأداة اختيار الأدوات في نظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم بعرض معاينات الأداة، حدِّد السمة previewImage
.
وفي حال تغيير مظهر التطبيق المصغّر، عدِّل صورة المعاينة.
إضافة وصف لتطبيقك المصغّر
بدءًا من نظام التشغيل Android 12، قدِّم وصفًا لأداة اختيار التطبيقات المصغّرة لعرضه كأداة لاختيارها.
أدخِل وصفًا للتطبيق المصغّر باستخدام السمة description
للعنصر <appwidget-provider>
:
<appwidget-provider
android:description="@string/my_widget_description">
</appwidget-provider>
يمكنك استخدام السمة descriptionRes
على إصدارات Android السابقة، ولكن يتجاهلها منتقي التطبيقات المصغّرة.
تفعيل عمليات نقل أكثر سلاسة
بدءًا من نظام التشغيل Android 12، توفر مشغّلات التطبيقات عملية انتقال أكثر سلاسة عندما يشغِّل المستخدم تطبيقك من تطبيق مصغّر.
لتفعيل هذا الانتقال المحسّن، استخدِم السمة @android:id/background
أو السمة android.R.id.background
لتحديد عنصر الخلفية:
// Top-level layout of the widget.
<LinearLayout
android:id="@android:id/background">
</LinearLayout>
يمكن لتطبيقك استخدام @android:id/background
في الإصدارات السابقة من Android
بدون تعطُّل، ولكن يتم تجاهله.
استخدام تعديل وقت التشغيل لـ RemoteViews
بدءًا من نظام التشغيل Android 12، يمكنك الاستفادة من العديد من
طُرق RemoteViews
التي تتيح تعديل سمات RemoteViews
في وقت التشغيل. راجِع مرجع واجهة برمجة التطبيقات RemoteViews
للاطّلاع على القائمة الكاملة للطرق المُضافة.
يوضح مثال الرمز البرمجي التالي كيفية استخدام بعض هذه الطرق.
Kotlin
// Set the colors of a progress bar at runtime. remoteView.setColorStateList(R.id.progress, "setProgressTintList", createProgressColorStateList()) // Specify exact sizes for margins. remoteView.setViewLayoutMargin(R.id.text, RemoteViews.MARGIN_END, 8f, TypedValue.COMPLEX_UNIT_DP)
Java
// Set the colors of a progress bar at runtime. remoteView.setColorStateList(R.id.progress, "setProgressTintList", createProgressColorStateList()); // Specify exact sizes for margins. remoteView.setViewLayoutMargin(R.id.text, RemoteViews.MARGIN_END, 8f, TypedValue.COMPLEX_UNIT_DP);