Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

رمز عنصر واجهة مستخدم للتطبيق الخاص بك الروبوت: إضافة نشاط تكوين

by
Difficulty:IntermediateLength:MediumLanguages:

Arabic (العربية/عربي) translation by Adjatay Bashroh Aldad (you can also view the original English article)

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

في هذه السلسلة من ثلاثة أجزاء، نحن بناء القطعة تطبيق يحتوي على كافة الوظائف ستجد في حد كبير كل القطعة الروبوت التطبيق.

في أول وظيفة، أنشأنا القطعة التي يقوم باسترداد ويعرض البيانات وينفذ إجراء فريد من نوعه في استجابة للأحداث onClick. ثم في آخر الثانية، قمنا بتوسيع نطاق أعمالنا القطعة لاسترداد وعرض بيانات جديدة تلقائياً بناء على جدول زمني، واستجابة لتفاعل المستخدم.

نحن كنت التقاط الحق حيث توقفنا، حتى إذا لم يكن لديك نسخة من القطعة أنشأنا في جزء واحد، يمكنك تحميله من GitHub.

تعزيز الخاص بك القطعة بنشاط التكوين

على الرغم من أن لدينا القطعة الوظائف من خارج منطقة الجزاء، وبعض الحاجيات يتطلب الإعداد الأولية — على سبيل المثال، سوف يتطلب القطعة التي يعرض الرسائل للمستخدم على عنوان البريد الإلكتروني وكلمة المرور. قد تحتاج أيضا إلى إعطاء المستخدمين القدرة على تخصيص القطعة، مثل تغيير لونه أو حتى تعديل وظائفه، مثل عدد مرات تحديث القطعة.

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

أنشطة التكوين قد أيضا في متناول اليدين إذا كان لديك الكثير من الأفكار حول المعلومات والميزات التي تريد تضمينها في القطعة. بدلاً من أن هدفهم كل هذا المحتوى في تخطيط معقد، ويحتمل أن تكون مربكة، يمكن توفير تكوين نشاط حيث المستخدمين انتقاء واختيار المحتوى التي تهمهم.

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

لإنشاء تكوين نشاط، ستحتاج إلى اتبع الخطوات التالية.

1. إنشاء تخطيط النشاط

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

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

هنا أنا إنشاء ملف مورد تخطيط configuration_activity.xml بسيط يحتوي على زر، عند استغلالها، سيقوم بإنشاء عنصر واجهة مستخدم التطبيق.

2. إنشاء فئة التكوين الخاص بك

يجب أن يتضمن التكوين الخاص بك نشاط معرف التطبيق القطعة مرت با Intent التي بدأت في تكوين النشاط.

إذا قمت فعل بتضمين تكوين النشاط، ثم لاحظ أن لن استدعاء الأسلوب onUpdate() عندما يقوم المستخدم بإنشاء مثيل من عنصر واجهة مستخدم، كما لا يتم إرسالها البث ACTION_APPWIDGET_UPDATE عند تكوين يتم إطلاق النشاط. أنها مسؤولية النشاط تكوين لطلب هذا التحديث الأول مباشرة من AppWidgetManager. وسوف يمكن استدعاء الأسلوب onUpdate() بشكل طبيعي لكافة التحديثات اللاحقة.

إنشاء فئة Java جديد المسمى configActivity وإضافة ما يلي:

3. تعلن نشاط التكوين في الملف الظاهر للمشروع الخاص بك

عندما تقوم بتعريف النشاط في بيان إلى التكوين الخاص بك Manifest، تحتاج إلى تحديد أن يقبل العمل ACTION_APPWIDGET_CONFIGURE:

4. تعلن نشاط التكوين في ملف AppWidgetProviderInfo

منذ التكوين المشار إليها النشاط خارج نطاق الحزمة الخاصة بك، تحتاج إلى تعريفه باستخدام مساحة الاسم المؤهل بالكامل:

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

Test the application widget configuration Activity

تذكر، يمكنك تحميل القطعة الانتهاء، كاملة مع التكوين النشاط، من GitHub.

تطبيق القطعة أفضل الممارسات

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

قد تكون هذه اللبنات الأساسية لعناصر تطبيقات Android ، ولكن إنشاء شيء يعمل فقط لا يكفي أبدًا- تحتاج أيضًا إلى التأكد من أن تطبيقك يوفر تجربة مستخدم جيدة ، باتباع أفضل الممارسات.

تنفيذ العمليات تستغرق وقتاً طويلاً إيقاف مؤشر الترابط الرئيسي

وقد الحاجيات نفس القيود وقت التشغيل كأجهزة استقبال البث العادي، حيث لديهم القدرة على عرقلة الروبوت في مؤشر ترابط UI البالغة الأهمية الرئيسية.

الروبوت بمؤشر ترابط واحد حيث يدير كافة التعليمات البرمجية للتطبيق بشكل افتراضي، وحيث يمكن للروبوت معالجة مهمة واحدة فقط في كل مرة، فمن السهل لعرقلة هذا الموضوع الهام. إجراء أي نوع من العمليات الطويلة أو مكثفة في مؤشر الترابط الرئيسي، وسوف يكون واجهة المستخدم للتطبيق الخاص بك لا يستجيب حتى اكتمال العملية. في أسوأ سيناريو، يمكن أن ينتج خطأ التطبيق لا يستجيب (ANR) الروبوت وتعطل التطبيق.

إذا القطعة تحتاج لتنفيذ أي مهام تستغرق وقتاً طويلاً أو كثيفة العمالة، ثم يجب عليك استخدام خدمة بدلاً من مؤشر الترابط الرئيسي. يمكنك إنشاء الخدمة كالمعتاد وثم يبدأ في أبويدجيتبروAppWidgetProvider الخاص بك. على سبيل المثال، هنا نحن نستخدم خدمة تحديث القطعة لدينا:

إنشاء تخطيط مرن

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

أولاً، إذا كان لديك القطعة resizeable، ثم يمكن للمستخدم يدوياً زيادة ونقصان حجم القطعة، وهو أمر لم يكن لديك ما يدعو للقلق مع الأنشطة التقليدية.

ثانيا، هناك أي ضمان بأن قياسات مينويدث و minHeight للقطعة سيتم محاذاة تماما مع الشبكة الشاشة الرئيسية لجهاز معين. عندما القطعة ليست حلاً مثاليا، نظام التشغيل الروبوت سوف تمتد هذه القطعة أفقياً و/أو عمودياً لاحتلال الحد الأدنى لعدد الخلايا المطلوبة لتلبية القيود مينويدث و minHeight القطعة. في حين لا ينبغي أن يكون هذا زيادة كبيرة، أنها لا تزال تجدر الإشارة إلى أنه منذ البداية قد الاحتلال القطعة مساحة أكبر مما كنت متوقعا.

إنشاء تخطيط مرن القطعة يتبع نفس أفضل الممارسات كتصميم تخطيط نشاط مرنة. هناك بالفعل الكثير من المعلومات المتاحة عن هذا الموضوع، ولكن هنا بعض النقاط الأكثر أهمية أن نضع في الاعتبار عند إنشاء تخطيطات القطعة:

  • تجنب المطلق وحدات القياس، مثل تعريف زر بالبكسل. بسبب كثافة الشاشة متفاوتة، لا يترجم 50 بكسل لنفس الحجم الفعلي على كل جهاز. حتى زر 50px سوف تظهر أكبر على شاشات منخفضة الكثافة وأصغر على شاشات عالية الكثافة. يجب دائماً تحديد أبعاد التخطيط الخاص بك في وحدات مستقلة عن كثافة (نقطة في البوصة) واستخدام عناصر مرنة مثل wrap_content و match_parent.
  • توفير الموارد البديلة التي هي الأمثل كثافات مختلفة من الشاشة. يمكنك أيضا توفير التخطيطات التي هي الأمثل لشاشة مختلفة الأحجام، استخدام مؤهلات التكوين مثل سماليستويدث (sw<N>dp). لا تنسى أن توفر إصدار افتراضي لكل مورد، هذا التطبيق الخاص بك لديه شيء يرتد على إذا واجه من أي وقت مضى شاشة مع الخصائص التي ليس لديها مورد محدد ل. يجب عليك تصميم هذه الموارد الافتراضية العادية ,شاشات متوسطة الكثافة.
  • اختبار القطعة الخاصة بك عبر شاشات أكبر عدد ممكن، واستخدام الروبوت المحاكي. عند إنشاء المتناوب، يمكن تحديد حجم شاشة الضبط والقرار، استخدام عناصر تحكم الشاشة التي تظهر في تكوين هذه الأجهزة الشخصية القائمة. لا تنسى لاختبار كيفية معالجة القطعة حجمه عبر جميع هذه الشاشات المختلفة!
Test your widget across a range of AVDs using the emulator

لا تنبيه الجهاز

تحديث القطعة يتطلب طاقة البطارية، ونظام تشغيل الروبوت قد لا تتورع عن الاستيقاظ جهاز نوم من أجل إجراء تحديث، مما يضاعف أثر القطعة على البطارية للجهاز.

إذا كان المستخدم يدرك أن القطعة يستنزف البطارية، ثم على الأقل أنهم ذاهبون إلى حذف تلك القطعة من على الشاشة الرئيسية. في سيناريو أسوأ الحالات، أنها قد حتى حذف التطبيق الخاص بك تماما.

لك ينبغي أن تهدف دائماً إلى تحديث القطعة نادراً ممكن أثناء لا يزال عرض المعلومات ذات الصلة وفي الوقت المناسب. ومع ذلك، قد يكون بعض القطع سببا مشروعا لاشتراط تواتر التحديثات — على سبيل المثال، إذا كان عنصر واجهة مستخدم يتضمن محتوى العالية الحساسة للوقت.

في هذا السيناريو، يمكنك تقليل تأثير هذه التحديثات المتكررة على عمر البطارية، عن طريق إجراء التحديثات استناداً إلى إنذار الذي لن تنبيه جهاز نوم. إذا هذا التنبيه تنفجر أثناء سكون الجهاز، ثم لن يتم تسليم التحديث حتى استيقظ الجهاز في المرة القادمة.

لتحديث استناداً إلى إنذار، تحتاج إلى استخدام AlarmManager بنية أن AppWidgetProvider وسوف تتلقى ، ثم قم بتعيين نوع التنبيه إلى أي منهما ELAPSED_REALTIME أو RTC، كما لن هذه الأنواع إنذار تنبيه جهاز نوم. على سبيل المثال:

إذا كنت تستخدم جهاز إنذار، ثم تأكد من فتح ملف أبويدجيتبروفيديرينفو للمشروع الخاص بك (res/xml/new_app_widget_info.xml) وتعيين updatePeriodMills إلى صفر ("0"). إذا كنت قد نسيت هذه الخطوة وستتجاوز قيمة updatePeriodeMills AlarmManager والقطعة سوف يظل بإمكانك تنبيه الجهاز كل مرة واحدة فإنه يتطلب تحديثًا.

استنتاج

في هذه السلسلة المكونة من ثلاثة أجزاء ، أنشأنا أداة تطبيق Android التي توضح كيفية تنفيذ جميع الميزات الأكثر شيوعًا في أدوات التطبيق.

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

شكرًا على القراءة ، وأثناء وجودك هنا ، يمكنك الاطلاع على بعض مشاركاتنا الرائعة الأخرى في تطوير تطبيقات Android!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.