إرشادات Material Design من أجل الحفاظ على اتساق المظهر بين الأجهزة والتوافق مع الإصدارات القديمة .
التوافق مع الأنظمة القديمة للألوان الديناميكية
لا تتوفّر الألوان الديناميكية إلا في الأجهزة التي تعمل بالإصدار 12 من نظام Android
أو الإصدارات الأحدث. لتقديم مظهر مخصّص للإصدارات الأقدم، أنشئ مظهرًا تلقائيًا
باستخدام ألوانك المخصّصة ومؤهّل جديد (values-v31
) باستخدام سمات المظهر
التلقائي.
في ما يلي مثال على استخدام مظهر Material 3:
<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>
<resources>
<!-- Do not override any color attribute. -->
<style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight" />
</resources>
ملاحظة: يمكنك الاطّلاع على الأنماط والمظاهر للحصول على دليل تفصيلي للتعامل مع الأنماط والألوان والسمات والمظاهر المختلفة.
تفعيل ميزة "المساعدة الصوتية"
تتيح إجراءات التطبيقات لتطبيق "مساعد Google"
عرض التطبيقات المصغّرة استجابةً للطلبات الصوتية ذات الصلة التي يوجّهها المستخدم. من خلال ضبط التطبيقات المصغّرة للردّ على المهام المضمّنة (BIIs) ، يمكن لتطبيقك عرض التطبيقات المصغّرة بشكل استباقي على مساحات عرض "مساعد Google"، مثل Android و
Android Auto. يمكن للمستخدمين
تثبيت التطبيقات المصغّرة التي يعرضها "مساعد Google" في
مشغّل التطبيقات، ما يشجع على التفاعل في المستقبل.
على سبيل المثال، يمكنك ضبط التطبيق المصغّر لملخّص التمارين الرياضية في تطبيق التمارين الرياضية
لتنفيذ الأوامر الصوتية للمستخدم التي تؤدي إلى بدء
GET_EXERCISE_OBSERVATION
BII. يعرض "مساعد Google" تطبيقك المصغّر بشكل استباقي عندما يشغّل المستخدمون ميزة "التفاعل الذكي مع المعلومات" من خلال طرح طلبات مثل "Ok Google، كم ميل ركضت هذا الأسبوع على
ExampleApp؟"
هناك عشرات واجهة برمجة التطبيقات لتحليلات السلوك التي تغطي عدة فئات من تفاعل المستخدمين، مما يتيح لأي تطبيق Android تقريبًا تحسين التطبيقات المصغّرة للتفاعل الصوتي. للبدء،
اطّلِع على مقالة دمج "إجراءات التطبيق" مع التطبيقات المصغّرة لنظام التشغيل Android .
يتيح لك نظام التشغيل Android 12 إضافة معاينات التطبيقات المصغّرة الموسّعة ووصف التطبيقات المصغّرة. يتيح لك نظام التشغيل Android 15 تحسين تجربت
مستخدمي تطبيقك في اختيار التطبيقات المصغّرة من خلال معاينات التطبيقات المصغّرة التي يتم إنشاؤها.
لتحسين تجربة أداة اختيار التطبيقات المصغّرة في تطبيقك، قدِّم معاينة
لتطبيق مصغّر تم إنشاؤه على أجهزة Android 15 والإصدارات الأحدث، ومعاينة لتطبيق مصغّر مكبَّر (بتحديد previewLayout
) لأجهزة Android 12 وحتى
Android 14، وpreviewImage
للإصدارات الأقدم.
يجب أن تضبط التطبيقات قيمة compileSdk
على 35 أو إصدار أحدث فيملفbuild.gradle
الوحدة لتكون قادرة على تقديمRemoteViews
إلى أداة اختيار التطبيقات المصغّرة على أجهزة Android 15 أو الإصدارات الأحدث. وهذا يعني أنّ التطبيقات يمكنها تعديل المحتوى في أداة الاختيار ليكون أكثر تمثيلاً لما يراه المستخدم.
يمكن للتطبيقات استخدام الطريقتَين AppWidgetManager
وsetWidgetPreview
و
getWidgetPreview
لتعديل مظهر التطبيقات المصغّرة باستخدام
معلومات محدّثة ومخصّصة.
إنشاء معاينة معدَّلة باستخدام Jetpack Glance
ينفِّذ Glance.compose
تركيبة واحدة، وبالتالي لا يتم استخدام أيّ دوال تعليق أو
عمليات تدفق أو طلبات غير متزامنة مشابهة في نص العنصر القابل للتجميع. بدلاً من ذلك،
يجب استخدام بيانات ثابتة.
يستخدم المثال التالي Jetpack Glance لإنشاء معاينة معدَّلة.
يجب ضبط الإصدار compileSdk
على 35 أو إصدار أحدث
لكي يظهر setWidgetPreview
كطريقة في هذا المقتطف.
AppWidgetManager . getInstance ( appContext ). setWidgetPreview (
ComponentName (
appContext ,
ExampleAppWidgetReceiver :: class . java
),
AppWidgetProviderInfo . WIDGET_CATEGORY_HOME_SCREEN ,
ExampleAppWidget (). compose (
context = appContext
),
)
إنشاء معاينة معدَّلة بدون Jetpack Glance
يمكنك استخدام RemoteViews
بدون ميزة "نظرة سريعة". يحمِّل المثال التالي مورد تنسيق شاشة widget بتنسيق XML ويضبطه كمعاينة. يجب ضبط الإعداد compileSdk على
35 أو إصدار أحدث لكي يظهر setWidgetPreview
كأحد
الطرق في هذا المقتطف.
AppWidgetManager . getInstance ( appContext ). setWidgetPreview (
ComponentName (
appContext ,
ExampleAppWidgetReceiver :: class . java
),
AppWidgetProviderInfo . WIDGET_CATEGORY_HOME_SCREEN ,
RemoteViews ( "com.example" , R . layout . widget_preview )
)
بدءًا من الإصدار 12 من Android، يمكن تغيير حجم معاينة التطبيق المصغّر المعروضة في
أداة اختيار التطبيقات المصغّرة. يمكنك تقديمه كتخطيط 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>
الشكل 3. معاينة التطبيق المصغّر التي تظهر تلقائيًا
في منطقة 3×3 ولكن يمكن أن تلائم منطقة 3×1 بسبب تنسيق XML
لعرض معاينة دقيقة، يمكنك توفير القيم التلقائية لتنسيق التطبيقات المصغّرة
الفعلي مباشرةً من خلال إكمال الخطوات التالية:
في حال عدم توفّر قيم تلقائية، قد تعرض المعاينة قيمًا غير صحيحة أو فارغة. ومن بين ميزات هذا الأسلوب المُهمّة أنّه يمكنك تقديم محتوى معاينة مترجم.
للحصول على الأساليب المقترَحة للمعاينات الأكثر تعقيدًا التي تحتوي على ListView
أو
GridView
أو StackView
، اطّلِع على إنشاء معاينات دقيقة تتضمّن
عناصر ديناميكية للاطّلاع على التفاصيل.
التوافق مع الإصدارات السابقة من خلال معاينات التطبيقات المصغّرة القابلة للتوسيع
للسماح لأدوات اختيار التطبيقات المصغّرة على الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم بعرض معاينات لتطبيقك المصغّر، حدِّد السمة previewImage
.
إذا غيّرت مظهر التطبيق المصغّر، عدِّل صورة المعاينة.
يجب أن يكون للتطبيقات المصغّرة اسم فريد عند عرضها في أداة اختيار التطبيقات المصغّرة.
يتم تحميل أسماء التطبيقات المصغّرة من سمة label
لعنصر receiver
التطبيق المصغّر في ملف AndroidManifest.xml.
<receiver
….
android:label="Memories">
….
</receiver>
بدءًا من Android 12، قدِّم وصفًا لتطبيق اختيار التطبيقات المصغّرة لعرضه على تطبيقك المصغّر.
الشكل 4. نموذج لأداة اختيار التطبيقات المصغّرة يعرض تطبيقًا مصغّرًا
ووصفًا له
قدِّم وصفًا لأداة التطبيقات المصغّرة باستخدام سمة 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>
تحذير: تجنَّب استخدام البث المباشر
باستخدام قفزات trampolines .
اعتبارًا من الإصدار 12 من Android، سيظل بإمكان التطبيق تشغيل نشاط من
مُستقبِل بث أو خدمة إذا تم بدء النشاط من رمز PendingIntent
الذي يظهر عند النقر على التطبيق المصغّر. ومع ذلك، لا يتم استخدام المؤثر المرئي الجديد للتطبيقات التي يتم تشغيلها من مستقبل بث أو خدمة، مما يؤدي إلى تجربة استخدام سيئة.
يمكن لتطبيقك استخدام @android:id/background
على الإصدارات السابقة من Android
بدون حدوث أي مشاكل، ولكن يتم تجاهله.
استخدام تعديل RemoteViews أثناء التشغيل
بدءًا من Android 12، يمكنك الاستفادة من عدة methods
RemoteViews
تتيح تعديل سمات RemoteViews
أثناء التشغيل. اطّلِع على مرجع RemoteViews
API
للحصول على القائمة الكاملة للطُرق المُضافة.
يوضّح مثال الرمز البرمجي التالي كيفية استخدام بعض هذه الطرق.
// 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 )
// 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 );