تطبيقات مصغّرة للتطبيقات هي طرق عرض مصغّرة للتطبيقات يمكنك تضمينها في تطبيقات أخرى، مثل الشاشة الرئيسية، وتلقّي تحديثات دورية. يُشار إلى هذه العروض باسم عناصر واجهة المستخدم في واجهة المستخدم، ويمكنك نشر أحدها باستخدام موفّر عنصر واجهة مستخدم للتطبيق (أو موفّر عنصر واجهة المستخدم). يُطلق على مكوّن التطبيق الذي يتضمّن تطبيقات مصغّرة أخرى اسم مضيف التطبيق المصغّر (أو مضيف التطبيق المصغّر). يعرض الشكل 1 نموذجًا لأداة موسيقى:
يوضّح هذا المستند كيفية نشر أداة باستخدام موفّر أدوات. للحصول على تفاصيل حول إنشاء AppWidgetHost خاص بك لاستضافة تطبيقات مصغّرة، راجِع إنشاء مضيف للتطبيقات المصغّرة.
للحصول على معلومات حول كيفية تصميم التطبيق المصغّر، اطّلِع على نظرة عامة على تطبيقات الأجهزة الجوّالة المصغّرة.
مكوّنات التطبيق المصغّر
لإنشاء أداة، يجب توفُّر المكوّنات الأساسية التالية:
AppWidgetProviderInfoعنصر- تصف هذه السمة البيانات الوصفية الخاصة بأداة، مثل تخطيط الأداة ومعدل التحديثات وفئة
AppWidgetProvider. يتمAppWidgetProviderInfoتحديده في ملف XML، كما هو موضّح في هذا المستند. AppWidgetProviderصف- تحدّد هذه السمة الطرق الأساسية التي تتيح لك التفاعل مع الأداة آليًا. من خلالها، يمكنك تلقّي عمليات بث عند تعديل الأداة أو تفعيلها أو إيقافها أو حذفها. عليك التعريف
AppWidgetProviderفي ملف البيان ثم تنفيذ هذا الإذن، كما هو موضّح في هذا المستند. - عرض التصميم
- تحدّد هذه السمة التنسيق الأوّلي للتطبيق المصغّر. يتم تحديد التصميم في XML، كما هو موضّح في هذا المستند.
يوضّح الشكل 2 كيفية ملاءمة هذه المكوّنات لسير عملية معالجة التطبيق المصغّر بشكل عام.
إذا كان التطبيق المصغّر يتطلّب إعدادات من المستخدم، عليك تنفيذ نشاط إعداد التطبيق المصغّر. يتيح هذا النشاط للمستخدمين تعديل إعدادات التطبيق المصغّر، مثل المنطقة الزمنية لتطبيق مصغّر خاص بالساعة.
- بدءًا من نظام التشغيل Android 12 (المستوى 31 من واجهة برمجة التطبيقات)، يمكنك تقديم إعدادات تلقائية والسماح للمستخدمين بإعادة ضبط التطبيق المصغّر لاحقًا. لمزيد من التفاصيل، يُرجى الاطّلاع على استخدام الإعدادات التلقائية للأداة والسماح للمستخدمين بإعادة ضبط الأدوات التي تم وضعها.
- في نظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، يتم تشغيل هذا النشاط في كل مرة يضيف فيها المستخدم الأداة إلى شاشته الرئيسية.
ننصحك أيضًا بإجراء التحسينات التالية: تنسيقات مرنة للأدوات وتحسينات متنوعة وأدوات متقدّمة وأدوات المجموعات وإنشاء مضيف للأدوات.
تعريف ملف AppWidgetProviderInfo XML
إنّ تحديد إعدادات البيانات الوصفية (مثل أحجام الخلايا التلقائية وقيود تغيير الحجم ومعدّلات التحديث) متطابق تمامًا في كل من طرق العرض التقليدية وودجات Glance.
للتعرّف على كيفية تحديد ملف XML الخاص بالبيانات الوصفية وإعداده، راجِع قسم تحديد قسم XML الخاص بـ AppWidgetProviderInfo في Compose-first ضمن مستندات Glance.
استخدام فئة AppWidgetProvider للتعامل مع عمليات البث الخاصة بالتطبيقات المصغّرة
يتم توحيد آليات استقبال البث في النظام الأساسي وفلاتر بيان التصريح وحلقات أحداث دورة الحياة ضمن النظام الأساسي. في عملية التطوير التي تعتمد على Compose أولاً، يتم تنظيم عمليات البث هذه باستخدام برنامج تضمين GlanceAppWidgetReceiver.
للتعرّف على كيفية تسجيل أداة الاستقبال في ملف البيان وتنفيذ عمليات إلغاء دورة الحياة المتوافقة مع Hilt، راجِع قسم استخدام فئة AppWidgetProvider للتعامل مع عمليات البث في مستندات Glance حول ميزة "التركيز على Compose".
إنشاء تخطيط التطبيق المصغّر
يجب تحديد تصميم أولي للأداة في XML وحفظه في دليل res/layout/ الخاص بالمشروع. راجِع إرشادات التصميم للاطّلاع على التفاصيل.
إنشاء تخطيط التطبيق المصغّر أمر بسيط إذا كنت على دراية بالتخطيطات. يُرجى العِلم أنّ تصاميم التطبيقات المصغّرة تستند إلى
RemoteViews، ما يعني أنّها لا تتوافق مع كل أنواع التصاميم أو التطبيقات المصغّرة للعرض.
لا يمكنك استخدام طرق عرض مخصّصة أو فئات فرعية من طرق العرض المتوافقة مع
RemoteViews.
تتيح السمة RemoteViews أيضًا استخدام ViewStub، وهي View غير مرئية وبحجم صفر يمكنك استخدامها لتعبئة موارد التصميم بشكل غير متزامن في وقت التشغيل.
إتاحة السلوك المرتبط بالحالة
يضيف نظام التشغيل Android 12 إمكانية استخدام السلوك المرتبط بالحالة باستخدام المكوّنات الحالية التالية:
لا يزال التطبيق المصغّر بلا حالة. يجب أن يخزِّن تطبيقك الحالة وأن يسجّل أحداث تغيير الحالة.
يوضّح مثال الرمز البرمجي التالي كيفية تنفيذ هذه المكوّنات.
// 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) )
قدِّم تصميمَين: أحدهما يستهدف الأجهزة التي تعمل بالإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث في res/layout-v31، والآخر يستهدف الإصدارات السابقة من نظام التشغيل Android 11 أو الإصدارات الأقدم في المجلد التلقائي res/layout.
تنفيذ الزوايا الدائرية
يتم احتساب نصفَي القطر الخارجي والداخلي المتناسبين للخلفية بشكل موحّد. في عملية التطوير المستندة إلى Compose، يمكن ضبط ذلك بشكل ديناميكي في Kotlin إلى جانب موارد المظهر المخصّص.
لتنفيذ نصف قطر الزوايا أو إعداد أنماط ديناميكية لأجهزة Android القديمة، راجِع قسم تنفيذ الزوايا الدائرية في مستندات Glance حول Compose أولاً.