تتضمّن هذه الصفحة تفاصيل حول التحسينات الاختيارية على التطبيقات المصغّرة المتوفّرة. بدءًا من نظام التشغيل Android 12 (المستوى 31). هذه الميزات اختيارية، ولكنها سهلة التنفيذ وتحسين تجارب المستخدمين تجربة التطبيق المصغّر.
استخدام ألوان ديناميكية
بدءًا من الإصدار 12 من نظام Android، يمكن للتطبيق المصغّر استخدام ألوان مظاهر الجهاز عن الأزرار والخلفيات وغيرها من المكونات وهذا يوفر تجربة أكثر سلاسة الانتقالات والاتساق بين التطبيقات المصغّرة المختلفة.
هناك طريقتان للحصول على ألوان ديناميكية:
استخدام المظهر التلقائي للنظام (
@android:style/Theme.DeviceDefault.DayNight
) في التنسيق الجذر.استخدم مظهر Material 3 (
Theme.Material3.DynamicColors.DayNight
) من المكونات المادية نظام التشغيل Android متاحة بدءًا من Material Components لنظام Android الإصدار 1.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>
![تطبيق مصغّر بمظهر "الوضع الفاتح"](https://developer.android.google.cn/static/images/appwidgets/example-lightmode.png?authuser=19&hl=ar)
![تطبيقات مصغّرة بمظهر "الوضع الداكن"](https://developer.android.google.cn/static/images/appwidgets/example-darkmode.png?authuser=19&hl=ar)
التوافق مع الأنظمة القديمة للألوان الديناميكية
لا تتوفّر الألوان الديناميكية إلا على الأجهزة التي تعمل بنظام التشغيل Android 12.
أو أعلى. لتوفير مظهر مخصص للإصدارات الأقدم، يمكنك إنشاء مظهر تلقائي
مع الألوان المخصّصة ومؤهِّل جديد (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" عرض الأدوات استجابة للأوامر الصوتية ذات الصلة للمستخدم. من خلال تهيئة للاستجابة إلى أهداف BII المضمّنة، أو عرض التطبيقات المصغّرة بشكل استباقي على مساحات عرض "مساعد Google"، مثل Android Android Auto: يمكن للمستخدمين التثبيت التطبيقات المصغّرة التي يعرضها "مساعد Google" على مما يشجع على التفاعل مستقبلاً.
على سبيل المثال، يمكنك ضبط التطبيق المصغّر لملخّص التمرين لتطبيق التمارين الرياضية
تنفيذ أوامر المستخدم الصوتية التي تؤدي إلى تشغيل
GET_EXERCISE_OBSERVATION
3- يعرض "مساعد Google" تطبيقك المصغّر بشكل استباقي عندما يشغّل المستخدمون طريقة BII هذه من خلال
من خلال تقديم طلبات مثل: "Ok Google، كم ميلاً جريت هذا الأسبوع في
ExampleApp؟"
هناك العشرات من مؤشرات التعريف الشخصية التي تغطي العديد من فئات تفاعل المستخدم، ما يتيح لأي تطبيق 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>
![صورة تعرض معاينة لتطبيق مصغّر](https://developer.android.google.cn/static/images/appwidgets/todo-list-groceries.png?authuser=19&hl=ar)
لعرض معاينة دقيقة، يمكنك توفير التطبيق المصغّر مباشرةً. التخطيط بالقيم الافتراضية عن طريق إكمال الخطوات التالية:
جارٍ إعداد
android:text="@string/my_widget_item_fake_1"
لـTextView
عناصر.يؤدي ضبط صورة أو رمز تلقائي أو عنصر نائب، مثل
android:src="@drawable/my_widget_icon"
، لـImageView
مكوّنات.
بدون القيم التلقائية، قد تعرض المعاينة قيمًا غير صحيحة أو فارغة. إنّ فائدة هذا الأسلوب هو أنه يمكنك توفير معاينة مترجمة المحتوى.
مع النُهج المقترَحة للمعاينات الأكثر تعقيدًا التي تحتوي على ListView
،
GridView
أو StackView
، يمكنك الاطّلاع على إنشاء معاينات دقيقة تتضمّن سمات ديناميكية.
للحصول على التفاصيل.
التوافق مع الأنظمة القديمة مع معاينات التطبيقات المصغّرة القابلة للتوسّع
للسماح لأداة اختيار التطبيقات المصغّرة على نظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم بعرض معاينات
التطبيق المصغَّر، يجب تحديد previewImage
.
في حال تغيير مظهر التطبيق المصغّر، يمكنك تعديل صورة المعاينة.
إضافة وصف للتطبيق المصغّر
بدءًا من الإصدار 12 من نظام التشغيل Android، قدِّم وصفًا للتطبيق المصغّر المنتقي الذي سيتم عرضه في التطبيق المصغّر.
![صورة تعرض أداة اختيار تطبيقات مصغّرة تعرض تطبيقًا مصغّرًا ووصفه](https://developer.android.google.cn/static/images/appwidgets/description.png?authuser=19&hl=ar)
قدِّم وصفًا لتطبيقك المصغّر باستخدام السمة 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
API
للحصول على قائمة كاملة بالطرق المضافة.
يوضح مثال الرمز التالي كيفية استخدام عدد قليل من هذه الطرق.
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);