تتضمن هذه الصفحة تفاصيل حول التحسينات الاختيارية للأدوات التي تتوفّر بدءًا من نظام Android 12 (المستوى 31 من واجهة برمجة التطبيقات). هذه الميزات اختيارية، ولكنها مباشرة لتنفيذ وتحسين تجربة الأداة للمستخدمين لديك.
استخدام ألوان ديناميكية
بدءًا من الإصدار 12 من نظام Android، يمكن للتطبيق المصغّر استخدام ألوان مظاهر الجهاز للأزرار والخلفيات والمكوّنات الأخرى. يوفّر ذلك تنقلات أكثر سلاسة وتناسقًا عبر أدوات مختلفة.
هناك طريقتان للحصول على ألوان ديناميكية:
استخدِم المظهر التلقائي للنظام (
@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" عرض التطبيقات المصغّرة استجابةً للأوامر الصوتية ذات الصلة للمستخدم. من خلال ضبط الأداة للاستجابة إلى أهداف BIS المضمّنة، يمكن للتطبيق عرض التطبيقات المصغّرة بشكل استباقي على مساحات عرض "مساعد Google"، مثل Android وAndroid Auto. يمكن للمستخدمين تثبيت التطبيقات المصغّرة التي يعرضها "مساعد Google" على مشغّل التطبيقات لديهم، ما يشجعهم على التفاعل في المستقبل.
على سبيل المثال، يمكنك ضبط التطبيق المصغّر لملخّص التمرين لتطبيق التمارين الرياضية
لتنفيذ أوامر المستخدم الصوتية التي تؤدي إلى تشغيل
GET_EXERCISE_OBSERVATION
BII. يعرض "مساعد Google" تطبيقك المصغّر بشكل استباقي عندما يشغّل المستخدمون BII من خلال
تقديم طلبات مثل: "Ok Google، كم ميلاً ركضت هذا الأسبوع على
ExampleApp؟"
هناك العشرات من مؤشرات BII التي تغطي العديد من فئات تفاعل المستخدمين، ما يتيح تقريبًا لأي تطبيق Android تحسين تطبيقاته المصغَّرة للتفاعل مع الصوت. للبدء، يمكنك الاطّلاع على دمج "مهامّ في التطبيقات" مع تطبيقات Android المصغّرة.
تحسين تجربة أداة اختيار التطبيقات المصغّرة في تطبيقك
يتيح لك نظام التشغيل Android 12 تحسين تجربة "أداة اختيار الأدوات" لتطبيقك من خلال إضافة معاينات ديناميكية للأدوات وأوصافها.
إضافة معاينات التطبيقات المصغّرة القابلة للتطوير إلى أداة اختيار التطبيقات المصغّرة
بدءًا من الإصدار 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>
لعرض معاينة دقيقة، يمكنك توفير تنسيق الأداة الفعلي مباشرةً بالقيم التلقائية من خلال إكمال الخطوات التالية:
جارٍ ضبط
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
بدءًا من الإصدار 12 من نظام التشغيل Android، يمكنك الاستفادة من العديد من
طرق 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);