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

اكتب رمزًا لـ Android: الإدخال والعرض

by
Difficulty:IntermediateLength:LongLanguages:

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

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

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

بحلول نهاية السلسلة ، تكون قد أنشأت عنصر واجهة مستخدم: 

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

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

ما هي تطبيقات الحاجيات؟ 

أداة التطبيق عبارة عن تطبيق مصغر وخفيف الوزن يقع عادة في إحدى الفئات التالية: 

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

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

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

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

نظرًا لأن أدوات تأمين الشاشة تم إيقافها في مستوى API 21 ، فسنقوم في هذه السلسلة بإنشاء أداة لشاشة الشاشة الرئيسية فقط. 

لماذا يجب علي إنشاء تطبيق القطعة؟ 

هناك العديد من الأسباب التي تجعلك تفكر في إضافة أداة تطبيق إلى أحدث مشروع Android. 

 سهولة الوصول إلى المعلومات والميزات الهامة 

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

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

الوصول المباشر إلى جميع شاشات أهم التطبيقات الخاصة بك 

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

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

إنشاء قاعدة المستخدمين الموالين والمشاركين 

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

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

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

إضافة عنصر واجهة مستخدم إلى مشروعك 

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

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

بمجرد أن يقوم Android Studio بإنشاء مشروعك ، حدد File> New> Widget> AppWidget من شريط أدوات Android Studio. يؤدي هذا إلى إطلاق قائمة تكوين المكونات حيث يمكنك تحديد بعض الإعدادات الأولية لعنصر واجهة المستخدم. 

Configure your widgets settings in Android Studio

معظم هذه الخيارات تشرح نفسها بنفسها ، ولكن هناك عدد قليل منها يستحق الاستكشاف بمزيد من التفصيل. 

يمكن تغيير حجمه (API 12+) 

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

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

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

الحد الأدنى للعرض والطول 

يحدد الحد الأدنى للعرض والارتفاع عدد الخلايا التي ستشغلها عنصر واجهة المستخدم في البداية عند وضعها على الشاشة الرئيسية. 

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

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

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

في حين أن العرض والارتفاع الدقيق للخلية "الشاشة الرئيسية" تختلف بين الأجهزة ، يمكنك الحصول على تقدير تقريبي لعدد نقاط DPI (نقطة لكل بوصة) ستشغل القطعة الخاصة بك باستخدام الصيغة التالية: 

على سبيل المثال، إذا كان لديك القطعة 2 × 3 الخلايا:

ستشغل هذه الأداة حوالي 110 x 180 DPI على الشاشة الرئيسية للمستخدم. إذا لم تتم محاذاة هذه القيم مع أبعاد خلايا جهاز معين ، فحينئذٍ سيقوم Android تلقائيًا بتقريب عنصر واجهة المستخدم إلى أقرب حجم للخلية. 

قم بمراجعة جميع الخيارات الموجودة في هذه القائمة وقم بإجراء أي تغييرات مطلوبة (أنا ملتزم بالإعدادات الافتراضية) ، ثم انقر فوق إنهاء . 

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

لاختبار الأداة: 

  • قم بتثبيت مشروعك على جهاز Android حقيقي أو AVD (جهاز Android Virtual). 
  • قم بتشغيل Android Widget Picker بالضغط على أي مساحة فارغة على الشاشة الرئيسية ، ثم اضغط على كلمة widget التي تظهر في أسفل الشاشة. 
  • انتقد من خلال "منتقي القطعة" حتى يمكنك تحديد عنصر واجهة المستخدم " المثالالأزرق" . 
  • اضغط لأسفل على هذه القطعة لإسقاطه على الشاشة الرئيسية الخاصة بك. 
  • أدخل وضع تغيير الحجم عن طريق الضغط على عنصر واجهة المستخدم حتى تظهر مجموعة من المقابض الزرقاء ، ثم اسحب هذه المقابض لزيادة أو تقليل عدد الخلايا التي تشغلها هذه الأداة. 
Test your widget on an Android Virtual Device

استكشاف ملفات تطبيق القطعة 

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

NewAppWidget.java

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

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

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

لنلقِ نظرة على طرق دورة الحياة المختلفة التي يمكنك تنفيذها في فئة موفر الأدوات:

و onReceive الحدث 

يقوم Android باستدعاء أسلوب onReceive () علىBroadcastReceiver المسجلة عند حدوث الحدث المحدد. 

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

و onEnabled الحدث 

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

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

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

و onAppWidgetOptionsChanged الحدث 

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

و onUpdate الحدث 

يتم استدعاء أسلوب دورة onUpdate () في كل مرة: 

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

يتم استدعاء أسلوب دورة onUpdate () أيضًا كاستجابة لـACTION_APPWIDGET_RESTORED ، والتي يتم بثها عند استعادة عنصر واجهة مستخدم من النسخة الاحتياطية. 

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

و onDeleted الحدث 

يتم استدعاء الأسلوب onDeleted () في كل مرة يتم فيها حذف مثيل من عنصر واجهة المستخدم من خلال App Widget Host ، والذي يشغل بثACTION_APPWIDGET_DELETED في النظام . 

و onDisabled الحدث 

يتم استدعاء هذه الطريقة ردًا على البث ACTION_APPWIDGET_DISABLED ، الذي يتم إرساله عند إزالة آخر مثيل من تطبيقك من خلال App Widget Host. على سبيل المثال ، إذا أنشأ المستخدم ثلاث مثيلات من عنصر واجهة المستخدم ، فسيتم فقط استدعاء الأسلوب onDisabled () عندما يزيل المستخدم الإصدار الثالث والأخير من شاشته الرئيسية. 

إن أسلوب دورة حياة onDisabled () هو المكان الذي يجب عليك تنظيف أي موارد قمت بإنشائه في onEnabled () ، لذلك إذا قمت بإعداد قاعدة بيانات فيonEnabled () ، فستحذفها في onDisabled () . 

و onRestored الحدث 

يتم استدعاء الأسلوب onRestored () كاستجابة لـACTION_APPWIDGET_RESTORED ، والتي يتم بثها عند استعادة نسخة من عنصر واجهة التطبيق من النسخة الاحتياطية. إذا كنت تريد الاحتفاظ بأي بيانات مستمرة ، فستحتاج إلى تجاوز هذه الطريقة وإعادة رسم AppWidgetIds السابقة إلى القيم الجديدة ، على سبيل المثال: 

إذا قمت بفتح ملف NewAppWidget.java الذي أنشأه Android Studio تلقائيًا ، فسترى أنه يحتوي بالفعل على تطبيقات لبعض أساليب دورة حياة هذه الأدوات: 

ملف تخطيط القطعة 

و RES / تخطيط / new_app_widget.xml يحدد ملف التخطيط لدينا القطعة، والذي هو حاليا مجرد خلفية زرقاء مع كلمة مثال كتب عبرها. 

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

لا تدعم ميزة RemoteViews كل نوع من التخطيط أو العرض ، لذلك عند إنشاء تخطيط عنصر واجهة مستخدم ، فإنك تكون مقتصرًا على الأنواع التالية: 

  • AnalogClock 
  • Button 
  • Chromometer 
  • FrameLayout 
  • GridLayout 
  • ImageButton 
  • ImageView 
  • LinearLayout 
  • ProgressBar 
  •  RelativeLayout 
  • TextView 
  • ViewStub 

إذا كنت تُنشئ أداة مجموعة مختارات ، يمكنك أيضًا استخدام الأنواع التالية عند تثبيت تطبيقك على Android 3.0 والإصدارات الأحدث: 

  • AdapterViewFlipper 
  • GridView 
  • ListView 
  • StackView 
  • ViewFlipper 

فرعية والمتحدرين من أعلاه المشاهدات غير معتمدة والطبقات. 

النقرات والضربات الشديدة 

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

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

ملف معلومات القطعة 

يحدد ملف res / xml / new_app_widget_info.xml (المعروف أيضًا باسم ملف AppWidgetProviderInfo) عددًا من خصائص عناصر واجهة المستخدم ، بما في ذلك العديد من الإعدادات التي حددتها في قائمة تكوين المكون في Android Studio ، مثل الحد الأدنى لأبعاد عنصر واجهة المستخدم وما إذا كان يمكن وضعه على lockscreen. 

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

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

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

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

ملف res / القيم / dimens.xml 

لا تبدو الأدوات المصغرة في أفضل حالاتها عندما يتم ضغطها ضد بعضها البعض ، أو عندما تمتد إلى حافة الشاشة الرئيسية. 

كلما تم عرض الأداة الخاصة بك على Android 4.0 أو أعلى ، يقوم نظام التشغيل Android تلقائيًا بإدراج بعض الحشو بين إطار التطبيق المصغّر والمربع المحيط. 

A widget consists of a bounding box frame widget margins widget padding and widget controls

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

عند إنشاء عنصر واجهة مستخدم باستخدام القائمة File> New> Widget> AppWidget ، ينشئ Android Studio ملفين dimens.xml يضمنان أن عنصر واجهة المستخدم يحتوي دائمًا على المساحة الصحيحة ، بغض النظر عن إصدار Android المثبت عليه. 

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

الدقة / القيم / د imens.xml 

يحدد هذا الملف مساحة 8dpi من المساحة المتروكة التي يحتاجها عنصر واجهة المستخدم لديك عندما يتم تثبيتها على مستوى API 13 أو ما قبله. 

RES / القيم V14 / dimens.xml 

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

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

يساعد هذا الهامش الافتراضي في تحقيق توازن ظاهري للشاشة الرئيسية ، لذا يجب تجنب تعديله - فأنت لا تريد أن تكون الأداة الخاصة بك هي القطعة الغريبة ، بعد كل شيء! 

يشير تخطيط عنصر واجهة المستخدم إلى قيمة هذا البُعد بالفعل (android: padding = "@ dimen / widget_margin") لذا يجب الحرص على عدم تغيير هذا السطر أثناء العمل على تخطيط الأداة الخاصة بك. 

على الرغم من أن هذه الملفات dimens.xml هي أسهل طريقة للتأكد من أن عنصر واجهة المستخدم الخاص بك يحتوي دائمًا على المساحة الصحيحة ، إذا لم تكن هذه التقنية مناسبة لمشروعك الخاص ، فحينئذٍ يكون أحد البدائل هو إنشاء خلفيات متعددة ذات تسعة ألوان بهامش مختلفة لمستوى واجهة برمجة التطبيقات (API) 14 وأعلى مستوى و API مستوى 13 وأقل.   يمكنك إنشاء تسع تصحيحات باستخدام أداة 9-patch للرسم في Android Studio ، أو باستخدام برنامج تحرير رسومات مخصص مثل Adobe Photoshop. 

بيان المشروع 

في ملف AndroidManifest.xml الخاص بمشروعك ، تحتاج إلى تسجيل الأداة الخاصة بك على هيئة BroadcastReceiver وتحديد مزود الأداة وملفAppWidgetProviderInfo الذي يجب أن تستخدمه هذه الأداة. 

إذا فتحت البيان ، فسترى أن Android Studio قد أضاف بالفعل كل هذه المعلومات لك. 

القطعة منتقي الموارد 

ملف res / drawable / example_appwidget_preview.png هو الموردالقابل للتنفيذ الذي يمثل عنصر واجهة المستخدم في منتقي الأدوات. 

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

عند إنشاء عنصر واجهة مستخدم باستخدام القائمة File> New> Widget> AppWidget ، ينشئ Android Studio معاينة قابلة للرسم تلقائيًا (example_appwidget_preview.png ). 

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

بناء التصميم الخاص بك 

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

سنضيف الوظائف التالية إلى الأداة لدينا: 

  • TextView أن يعرض التطبيق القطعة ID التسمية. 
  • TextView يقوم باسترداد ويعرض ID لهذا المثيل القطعة معين.  
  • TextView يستجيب ل عند _ النقر الأحداث من خلال إطلاق المتصفح الافتراضي للمستخدم وتحميل URL. 

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

خلق خلفية القطعة 

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

  • انقر مع الضغط على Control في مجلد drawable للمشروع الخاص بك وحددNew> Resourceable Drawable . 
  • قم بتسمية widget_background هذا الملف وانقر فوق OK . 
  • أدخل الكود التالي: 

2. قم بإنشاء خلفية TextView 

بعد ذلك ، أنشئ شكلًا لاستخدامه كخلفية لـ TextViews لدينا : 

  • انقر مع الضغط على Control في مجلد drawable للمشروع الخاص بك وحددNew> Resourceable Drawable . 
  • اسم هذا الملف tvbackground ثم انقر فوق موافق . 
  • أدخل الكود التالي: 

3. إنشاء بعض الأنماط 

سأستخدم أيضًا الأنماط التالية: 

  • widget_text . تأثير جريء سأقدمه على نص الأداة. 
  • widget_views . الهوامش والحشو المختلفة التي سأطبقها على TextViews الخاصة بي . 

افتح ملف styles.xml للمشروع وأضف ما يلي: 

4. بناء تخطيط الخاص بك! 

والآن بعد أن أصبحت جميع مواردنا في مكانها الصحيح ، يمكننا إنشاء تصميم الأداة لدينا. افتحالملف new_app_widget.xml وأضف ما يلي: 

أخيرًا ، افتح ملف strings.xml وحدد موارد السلسلة التي أشرنا إليها في تخطيطنا: 

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

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

يتمثل أحد الحلول الممكنة في عرض التنسيق باستخدام جلد Android Wear (المربع) ، وهو ما يضاهي حجم وشكل أداة تطبيق Android: 

  • تأكد من تحديد علامة التبويب جهاز Android Studio . 
  • افتح القائمة المنسدلة للجهاز . 
  • حدد 280 × 280 ، hdpi (مربع) من القائمة المنسدلة. 
Try rendering your widget layout using the Android Wear Square skin

إنشاء وظيفة القطعة

بعد أن أصبحت الأداة التي نوفرها الآن جزءًا من الوقت ، فقد حان الوقت لمنحها بعض  الوظائف:

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

افتح ملف موفر القطعة ( NewAppWidget.java ) واحذف السطر الذي يسترد موردسلسلة appwidget_text : 

في كتلة updateAppWidget ، نحتاج الآن إلى تحديث العنصر النائبR.id.id_value بالمعرف الفريد للأداة. 

نحتاج أيضًا إلى إنشاء كائن Intent يحتوي على عنوان URL الذي يجب تحميله كلما تفاعل المستخدم مع TextView هذا . 

فيما يلي ملف موفر القطعة الكامل: 

اختبار القطعة 

لقد حان الوقت لوضع هذه الأداة على المحك! 

  • قم بتثبيت المشروع المحدث على جهاز Android الخاص بك. 
  • للتأكد من أنك تشاهد أحدث إصدار من هذه الأداة ، أزل أي مثيلات عنصر واجهة تعامل موجودة من الشاشة الرئيسية. 
  • اضغط على أي مقطع فارغ من الشاشة الرئيسية ، ثم حدد الأداة من منتقي الأدوات. 
  • إعادة ضبط وتغيير حجم القطعة كما هو مطلوب. 
Put your Android application widget to the test
  • تحقق من استجابة الأداة لأحداث إدخال المستخدم ، وذلك باختيار النقر لبدء تشغيل TextView . يجب أن تستجيب أداة التطبيق عن طريق إطلاق المتصفح الافتراضي وتحميل عنوان URL. 

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

الاستنتاج

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

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

في هذه الأثناء ، تحقق من بعض مشاركاتنا الرائعة الأخرى حول تطوير تطبيق Android هنا على Envato Tuts +! 

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.