أنا متأكد من أنك شعرت في وقت ما بأنك تفتقد ذلك. وظائف سريعة على الشاشة الرئيسية لهاتفك دون الحاجة إلى فتح التطبيق بأكمله. كانت الأدوات المصغّرة موجودة منذ بدايات نظام أندرويد، ولكن مع وصول أندرويد 12، عادت لتصبح رائجة من جديد، مما أجبرنا على إعادة التفكير في كيفية عرض المعلومات بنظرة سريعة.
لتسهيل الأمور على المطورين، أطلقت جوجل نظرة سريعة على حقيبة الظهر النفاثةمكتبة تُمكّننا من الاستغناء عن لغة XML التقليدية المُرهقة وتسخير قوة Compose. باختصار، إنها طريقة لإنشاء تلك النوافذ التفاعلية الصغيرة باستخدام نهج حديث وتصريحيومع ذلك، من المهم أن نفهم أنها لا تزال تعمل وفقًا لقواعد RemoteViews، مما يعني وجود بعض القيود التقنية التي يجب أن نكون على دراية بها.
لنبدأ: الإعداد الأولي
لبدء بناء عنصر واجهة المستخدم الخاص بك، أول شيء يجب فعله هو تهيئة الأرضية. أنت بحاجة إلى توسيع الفئة مستقبل أدوات تطبيق Glanceهذا المُستقبِل هو بمثابة القلب الذي يربط نظام التشغيل بواجهة Glance. في الكود، ستحتاج إلى تحديد فئة عنصر واجهة المستخدم التي ترغب في استخدامها عن طريق تعيينها للخاصية. glanceAppWidget.
لا تنس أن ملف AndroidManifest.xml على هنا تكمن روعة عملية التسجيل. يجب عليك تحديد المُستقبِل وإضافة مُرشِّح النية للإجراء. APPWIDGET_UPDATEعلاوة على ذلك، من الضروري ربطه بملف بيانات تعريف XML باستخدام العنصر meta-data، وهو المكان الذي سنحدد فيه الخصائص الفيزيائية للأداة.
تحديد المظهر والحجم
أرشيف الموارد my_app_widget_info.xml هنا تحدد المساحة التي سيشغلها تصميمك. هنا نقوم بضبط الإعدادات معلومات مزود أداة التطبيقومن النقاط المثيرة للاهتمام أن Glance، على عكس الأدوات القديمة، لا يتطلب ملف XML للتصميم الأولي، على الرغم من أن استخدام واحد يُوصى به بشدة. تصميم الأحمال المحددة مسبقًا من المكتبة حتى لا يرى المستخدم مساحة فارغة أثناء عرض الواجهة.
فيما يتعلق بالأبعاد، قدم نظام أندرويد 12 مفاهيم عرض الخلية المستهدفة y ارتفاع الخلية المستهدفوالتي تحدد الحجم بناءً على خلايا الشبكة. ولضمان توافق تطبيقك مع الإصدارات السابقة، فإن النهج الأمثل هو اتخاذ خطوتين وتحديد عرض minWidth y minHeight في dp. بهذه الطريقة، إذا كان الجهاز قديمًا، فسيقوم النظام بإجراء الحساب عن طريق التقريب لأعلى وفقًا لأقرب خلية.
- وضع تغيير الحجم: يتيح لك ذلك تحديد ما إذا كان بإمكان المستخدم تمديد الأداة أفقيًا أو رأسيًا أو في كلا الاتجاهين.
- الحد الأدنى/الأقصى لتغيير الحجم: لقد وضعوا حدوداً مطلقة حتى لا تصبح الواجهة غير قابلة للقراءة أو ضخمة للغاية.
- تحديث الفترة بالمللي ثانية: تحكم في عدد مرات تحديث المحتوى؛ واحرص على عدم الإفراط في استخدام هذه الميزة. سيؤدي ذلك إلى تلف البطارية من المستخدم، لذلك من الأفضل عدم التحديث أكثر من مرة واحدة في الساعة.
بناء الواجهة باستخدام Compose
أكثر ما يُمتع في الأمر هو تصميم واجهة المستخدم. وللقيام بذلك، نقوم بإنشاء فئة ترث من أداة تطبيق Glance وقمنا باستبدال الطريقة provideGlanceهنا نقوم بتحميل البيانات اللازمة. ملاحظة تقنية هامة: تعمل هذه الطريقة على الخيط الرئيسي، لذا إذا كنت بحاجة إلى إجراء استعلام قاعدة بيانات معقد، فاستخدم مع السياق للانتقال إلى سلسلة عمليات ثانوية وعدم حظر التطبيق.
ضمن provideContentبدأنا باستخدام مكونات Glance. على الرغم من أنها تشبه تلك الموجودة في Compose، إلا أنها عناصر محددة. على سبيل المثال، يمكننا استخدام عمود لتكديس العناصر عموديًا أو صف لوضع الأزرار جنبًا إلى جنب. ولإضافة التفاعلية، نستخدم إجراءات مثل actionStartActivity، مما يسمح للأداة بتشغيل نشاط معين عند النقر عليها.
تفاصيل التشطيب والتحسين
إذا كنت ترغب في أن تبدو أداتك احترافية، فعليك الانتباه إلى زوايا مدورةيسمح نظام Android 12 باستخدام راديو النظام بواسطة system_app_widget_background_radiusفي برنامج Glance، يمكن تطبيق ذلك بسهولة باستخدام المُعدِّل. cornerRadiusلضمان عمل كل شيء بشكل مثالي على الإصدارات القديمة من نظام أندرويد، فإن أفضل طريقة هي التنفيذ موارد القوالب المخصصة والتي تُعتبر بديلاً.
فيما يتعلق بإدارة الفعاليات، فإن GlanceAppWidgetReceiver وهي مسؤولة عن ترجمة إشعارات النظام إلى دورات حياة Compose. لديك طرق مثل onUpdate لإنعاش العينين أو onDeleted لمسح البيانات عند حذف المستخدم للأداة. مع ذلك، كن حذرًا جدًا بشأن الوقت: لدى المستلمين حد زمني صارم مدته 10 ثوانٍإذا كانت مهمتك طويلة، فلا تخاطر وقم بتفويض العمل لشخص آخر. WorkManager.
يُتيح تطبيق هذه الصور المصغرة التفاعلية إنشاء تجارب سلسة وقابلة للتكيف بفضل دمج يؤلف Jetpack، وتحسين كل شيء بدءًا من تسجيل البيانات الوصفية وإدارة أبعاد XML وحتى عرض المكونات الديناميكي وتكييف نصف قطر الزاوية وفقًا لإصدار Android الخاص بالجهاز. شارك هذه المعلومات حتى يعرف المستخدمون الآخرون عن الموضوع.