إنشاء تطبيق مصغّر أساسي

تجربة طريقة Compose
‫Jetpack Compose هي مجموعة أدوات واجهة المستخدم المقترَحة لنظام التشغيل Android. تعرَّف على كيفية إنشاء التطبيقات المصغّرة باستخدام واجهات برمجة تطبيقات Compose-style.

التطبيقات المصغّرة هي طرق عرض مصغّرة للتطبيقات يمكنك تضمينها في تطبيقات أخرى، مثل الشاشة الرئيسية، وتلقّي تحديثات دورية. يُشار إلى طرق العرض هذه باسم التطبيقات المصغّرة في واجهة المستخدم، ويمكنك نشر أحدها من خلال مقدّم خدمة التطبيقات المصغّرة (أو مقدّم خدمة التطبيقات المصغّرة). يُطلق على مكوّن التطبيق الذي يحتوي على تطبيقات مصغّرة أخرى اسم مضيف التطبيق المصغّر (أو مضيف التطبيق المصغّر). يوضح الشكل 1 نموذجًا لعنصر واجهة مستخدم للموسيقى:

مثال على تطبيق الموسيقى المصغّر
الشكل 1. مثال على تطبيق مصغّر للموسيقى

يوضّح هذا المستند كيفية نشر تطبيق مصغّر باستخدام موفّر تطبيقات مصغّرة. للحصول على تفاصيل حول إنشاء AppWidgetHost لاستضافة التطبيقات المصغّرة، يُرجى الاطّلاع على إنشاء مضيف للتطبيقات المصغّرة.

للحصول على معلومات حول كيفية تصميم التطبيق المصغّر، يُرجى الاطّلاع على نظرة عامة على التطبيقات المصغّرة.

مكوّنات التطبيق المصغّر

لإنشاء تطبيق مصغّر، تحتاج إلى المكوّنات الأساسية التالية:

عنصر AppWidgetProviderInfo
تصف البيانات الوصفية لأداة، مثل تنسيق الأداة ومعدل التحديثات وفئة AppWidgetProvider. AppWidgetProviderInfo محدَّدة في XML، كما هو موضّح في هذا المستند.
صف AppWidgetProvider
تحدّد الطرق الأساسية التي تتيح لك التفاعل مع التطبيق المصغّر آليًا. ومن خلاله، تتلقّى عمليات بث عند تعديل التطبيق المصغّر أو تفعيله أو إيقافه أو حذفه. يمكنك تعريف AppWidgetProvider في البيان ثم تنفيذه، كما هو موضّح في هذا المستند.
عرض التصميم
تحدّد هذه السمة التنسيق الأولي للتطبيق المصغّر. يتم تحديد التنسيق في ملف XML، كما هو موضّح في هذا المستند.

يوضّح الشكل 2 كيفية دمج هذه المكوّنات في عملية معالجة التطبيقات المصغّرة بشكل عام.

عملية معالجة التطبيقات المصغّرة
الشكل 2. سير معالجة التطبيق المصغّر

إذا كان التطبيق المصغّر يحتاج إلى ضبط من قِبل المستخدم، يمكنك تنفيذ نشاط ضبط التطبيق المصغّر. يتيح هذا النشاط للمستخدمين تعديل إعدادات التطبيق المصغّر، مثل المنطقة الزمنية لتطبيق مصغّر للساعة.

  • بدءًا من الإصدار 12 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 31)، يمكنك توفير إعدادات تلقائية والسماح للمستخدمين بإعادة ضبط التطبيق المصغّر لاحقًا. لمزيد من التفاصيل، يُرجى الاطّلاع على استخدام الإعدادات التلقائية للأداة والسماح للمستخدمين بإعادة ضبط الأدوات التي تمت إضافتها.
  • في الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، يتم تشغيل هذا النشاط في كل مرة يضيف فيها المستخدم التطبيق المصغّر إلى شاشته الرئيسية.

ننصح أيضًا بإجراء التحسينات التالية: تنسيقات التطبيقات المصغّرة المرنة والتحسينات المتنوعة والتطبيقات المصغّرة المتقدّمة والتطبيقات المصغّرة للمجموعات وإنشاء مضيف للتطبيقات المصغّرة.

تعريف ملف XML الخاص بـ AppWidgetProviderInfo

إنّ تحديد إعدادات البيانات الوصفية (مثل أحجام الخلايا التلقائية وقيود تغيير الحجم ومعدّلات التحديثات) متطابق تمامًا في كل من طرق العرض التقليدية والتطبيقات المصغّرة المستندة إلى Glance.

للتعرّف على كيفية تحديد ملف XML للبيانات الوصفية وضبطه، يُرجى الاطّلاع على قسم الإعلان عن AppWidgetProviderInfo XML في مستندات Glance.

استخدام فئة AppWidgetProvider لمعالجة عمليات بث التطبيقات المصغّرة

يتم توحيد آليات مستقبل البث في المنصة وفلاتر بيان البيان وحلقات أحداث مراحل النشاط ضمن المنصة. في عملية التطوير التي تعتمد على Compose، يتم تنظيم عمليات البث هذه باستخدام برنامج تضمين GlanceAppWidgetReceiver.

لفهم كيفية تسجيل جهاز الاستقبال في البيان وتنفيذ عمليات إلغاء مراحل النشاط المتوافقة مع Hilt، يُرجى الاطّلاع على قسم استخدام فئة AppWidgetProvider لمعالجة عمليات البث في مستندات Glance.

إنشاء تنسيق التطبيق المصغّر

يجب تحديد تنسيق أوّلي للتطبيق المصغّر بتنسيق XML وحفظه في دليل res/layout/ الخاص بالمشروع. يُرجى الرجوع إلى إرشادات التصميم للاطّلاع على التفاصيل.

إنّ إنشاء تنسيق التطبيق المصغّر أمر بسيط إذا كنت على دراية بالتنسيقات. ومع ذلك، يُرجى العِلم أنّ تنسيقات التطبيقات المصغّرة تستند إلى RemoteViews، التي لا تتوافق مع كل أنواع التنسيقات أو التطبيقات المصغّرة للعرض. لا يمكنك استخدام طرق العرض المخصّصة أو الفئات الفرعية لطرق العرض المتوافقة مع RemoteViews.

يتيح RemoteViews أيضًا استخدام ViewStub، وهو View غير مرئي وحجمه صفر يمكنك استخدامه لتضخيم موارد التصميم بشكل كسول في وقت التشغيل.

دعم السلوك ذي الحالة

يضيف Android 12 إمكانية استخدام السلوك ذي الحالة باستخدام المكوّنات الحالية التالية:

لا يزال التطبيق المصغّر عديم الحالة. يجب أن يخزّن تطبيقك الحالة ويسجّل أحداث تغيير الحالة.

مثال على تطبيق مصغّر لقائمة تسوّق يعرض سلوكًا يتضمّن حالة
الشكل 3. مثال على السلوك المستند إلى الحالة

يوضّح مثال الرمز التالي كيفية تنفيذ هذه المكوّنات.

// Check the view.
remoteView.setCompoundButtonChecked(R.id.my_checkbox, true)

// Check a radio group.
remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2)

// Listen for check changes. The intent has an extra with the key
// EXTRA_CHECKED that specifies the current checked state of the view.
remoteView.setOnCheckedChangeResponse(
    R.id.my_checkbox,
    RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent)
)

يجب توفير تنسيقَين: أحدهما يستهدف الأجهزة التي تعمل بنظام التشغيل Android 12 أو الإصدارات الأحدث في المجلد res/layout-v31، والآخر يستهدف الإصدارات السابقة من نظام التشغيل Android 11 أو الإصدارات الأقدم في المجلد التلقائي res/layout.

تنفيذ الزوايا المستديرة

يتم احتساب نصف القطر النسبي للخلفية الخارجية والداخلية بشكل عادي ومشترك. في التطوير المستند إلى Compose، يمكن ضبط ذلك ديناميكيًا في Kotlin إلى جانب موارد المظاهر المخصّصة.

لتطبيق أنصاف أقطار الزوايا أو إعداد أنماط ديناميكية لأجهزة Android القديمة، يُرجى الاطّلاع على قسم تطبيق الزوايا الدائرية في مستندات Glance.