نحوه ایجاد ویدجت صفحه اصلی اندروید- قسمت اول: ایجاد یک ویدجت ساده

ویدجت ها یا ابزارک ها می توانند به عنوان یک پنجره کوچک یا یک کنترل کننده برای اپلیکیشن های اندروید استفاده شوند و در دیگر اپلیکیشن ها (مانند صفحه اصلی) هم می توانند تعبیه شوند. آنها می توانند بسیار مفید باشند و اجازه می دهند که کاربران یک اپلیکشن را بدون راه اندازی اولیه، مشاهده یا کنترل کنند. این تعریف رسمی ویدجت در اندروید می باشد:

ویدجت ها یکی از جنبه های ضروری سفارشی سازی صفحه اصلی می باشند. شما می توانید آنها را “بازدید در یک نگاه”  داده های مهم اپلیکیشن تصور کنید و قابلیتی است که از صفحه اصلی برای کاربران در دسترس می باشد.

نحوه ایجاد ویدجت در برنامه نویسی اندروید

انواع ویدجت در اندروید

ویدجت ها می توانند به ۴ نوع در اندروید تقسیم شوند که عبارتند از:

Information widget یا  ویدجت اطلاعات:

نمایش تعداد کمی از عناصر اطلاعاتی مهم که برای کاربر مهم است و پیگیری می کند که اطلاعات چگونه در گذر زمان تغییر می کنند. نمونه های خوبی برای ویدجت اطلاعاتی وجود دارد مثل : ویدجت آب و هوا، ویدجت ساعت و یا ویدجت تغییرات امتیازات ورزشی. با لمس ویدجت های اطلاعاتی معمولا برنامه های مرتبط با آنها باز می شود و یک نمایش جزئیات از اطلاعات ویدجت باز می شود. برای مثال ویدجت آب و هوا.

Collection widget یا ویدجت مجموعه ای:

ویدجت های مجموعه ای برای نمایش تعدادی از عناصر هم نوع استفاده می شوند: مثل مجموعه عکس ها از اپلیکیشن گالری، مجموعه مقالات یک اپلیکیشن خبری، یا مجموعه ای از ایمیل ها یا پیام ها از یک اپلیکیشن ارتباطی. برای مثال: ویدجت ایمیل.

Control یا ویدجت های کنترلی:

هدف اصلی ویدجت های کنترلی اغلب نمایش توابعی است که کاربر می تواند حق استفاده از صفحه نمایش را بدون نیاز به باز کردن اولیه اپلیکیشن بدهد. برای مثال: تغییرات وای فای، بلوتوث و …

Hybrid widget یا ویدجت های ترکیبی:

در حالی که همه ی ویدجت ها تمایل دارند جزء یکی از سه نمونه ی ذکر شده در بالا باشند، بسیاری از ویدجت ها در واقعیت هیبریدی هستند و شامل عناصری از انواع مختلف هستند. به منظور برنامه ریزی این نوع ویدجت ، محوریت ویدجت خود را از یکی از انواع پایه قرار می دهند و در صورت نیاز عناصری از انواع دیگر را به آن اضافه می کنند. برای مثال: ویدجت پخش کننده موسیقی.

اجزای یک ویدجت

ویدجت ها سه جزء دارند و شما باید آنها را پیاده سازی نمایید:

یک آبجکت AppWidgetProviderInfo : توصیف ابرداده برای ویدجت برنامه، مانند لایه ویدجت برنامه، تعداد دفعات به روزرسانی، و کلاس AppWidgetProvider است. این کار باید در XML تعریف شده باشد.

اجرای کلاس AppWidgetProvider : روش های اساسی را تعریف می کند که به شما اجازه می دهد که اینترفیس را با ویدجت اپلیکیشن برنامه نویسی کنید.

نمایش layout : طرح اولیه layout را برای ویدجت اپلیکیشن در XML تعریف می کند.

علاوه بر این شما می توانید اکتیویتی پیکربندی ویدجت اپلیکیشن را پیاده سازی کنید. این یک فعالیت اختیاری است که زمانی که کاربر ویدجت اپلیکیشن شما را فعال می کند و به آن اجازه می دهد که او را به تغییر تنظیمات ویدجت در زمان مشخص شده ببرد، اجرا می شود.

بخش های زیر توصیف چگونگی راه اندازی هر یک از این اجزای ویدجت است:

در حال حاضر، این مراحل را برای ایجاد یک ویدجت بسیار ساده دنبال کنید. این ویدجت یک وب سایت را زمانی که روی آن کلیک کنید باز می کند.

نحوه ایجاد layout  برای ویدجت

یک layout   ساده که فقط شامل یک TextView می باشد را برای ویدجت ایجاد کنید:

res\layout\widget_simple.xml

 

این  layout   یک ویدجت ساده را روی صفحه اصلی کاربر نمایش می دهد.

ایجاد یک فایل XML که ویژگی های ویدجت را تعریف می کند.

AppWidgetProviderInfo کیفیت ضروری ویدجت را تعریف می کند مثل حداقل ابعاد layout ، منابع طرح اولیه آن، ویدجت چگونه به روزرسانی شود و یک اکتیویتی پیکربندی برای راه اندازی ویدجت در زمان مشخص شده (که این مورد اختیاری است).

یک آبجکت AppWidgetProviderInfo  در یک منبع XML با استفاده از یک عنصر <appwidget-provider>  تعریف کنید و ان را در فولدر project’s res/xml/  ذخیره نمایید.

widget_provider_info.xml

 

حال به برخی صفات <appwidget-provider> که در بالا به آن اشاره شد، نگاهی می اندازیم:

  • minHeight و  minWidth :

هر ۶۰dp به اندازه ی یک سلول در صفحه نمایش اندروید می باشد که برای این مثال ، ویدجت به اندازه ی ۱X1  سلول است.

  • initialLayout :

مرجعی برای layout ویدجت می باشد(که ما در حال حاضر در حال ایجاد آن هستیم)

  • previewImage :

تصویری که روی صفحه نمایش انتخاب شده ی اندروید نمایش داده خواهد شد. ما نمی توانیم یک layout برای پیش نمایش ایجاد کنیم. ما مجبوریم یک تصویر را تنظیم نماییم. برای ساده تر شدن موضوع من از ic_launcher اپلیکیشن استفاده می کنم.

  • resizeMode :

پیکربندی برای تغییر اندازه ی ویدجت.

  • updatePeriodMillis :

متد به روزرسانی ویدجت است که در زمان مشخص شده در یک میلی ثانیه است.

ایجاد یک کلاس برای lifecycle ویدجت:

حالا ما باید یک زیرکلاس برای AppWidgetProvider ایجاد کنیم (که همچنین یک زیرکلاس برای BroadcastReceiver است). ما اساسا کلاس ویدجت را در کلاس receiver ایجاد می کنیم. برخی متدهای مهم هم وجود دارد که شما باید آنها را نادیده بگیرید که عبارتند از:

onUpdate() : برای به روزرسانی ویدجت برنامه در فواصل زمانی تعریف شده توسط updatePeriodMillis attribute می باشد.

onEnabled() : زمانی که یک نمونه ویدجت برنامه برای اولین بار ایجاد شده است.

onDisabled() : وقتی که آخرین نمونه از ویدجت برنامه از میزبان ویدجت برنامه حذف شده است.

onDeleted() : زمانی که یک ویدجت برنامه از میزبان حذف شده است.

onAppWidgetOptionsChanged() : زمانی که ویدجت عنصر اول قرار داده شده و همچنین هر زمان که ویدجت تغییر اندازه داده شده است.

onReceive() : برای هر broadcast .

در این قسمت من فقط می خواهم یک ویدجت ساده ایجاد کنم و بنابراین از onUpdate چشمپوشی می کنم.

SimpleWidget.java

 

شما باید به عنوان یک کلاس receiver ، در AndroidManifest.xml رجیستر کنید:

AndroidManifest.xml

 

اجرای اپلیکیشن:

یک ویدجت همیشه به اپلیکیشنش متصل است. هنگامی که یک پروزه اندروید استودیو ایجاد می کنید، مطمئن شوید که اکتیویتی پیش فرض (معمولا MainActivity) را دارید. اپلیکیشن را ایجاد کنید تا ویدجت نصب شود و همچنین MainActivity  با عنوان (with “Hello world!”) نمایش داده شود.

به تب “WIDGETS” روی دستگاهتان بروید و ویدجت خود را آنجا مشاهده کنید.:

حال به منظور استفاده از ویدجت خود، آن را نگه دارید و روی صفحه اصلی دستگاه درگ کنید:

و حالا روی ویدجت کلیک کنید

به خاطر داشته باشید که اگر اپلیکیشن را حذف کنید، ویدجت آن هم حذف می شود:

در این قسمت ما به مفهوم اصلی ویدجت در اندروید پی بردیم و یاد گرفتیم که چگونه یک ویدجت ساده ایجاد کنیم. در قسمت بعدی من در مورد نحوه ی ایجاد یک ویدجت Broadcast یعنی ویدجتی که با کلیک بر روی آن ، به روز رسانی می شود، صحبت خواهم کرد. علاوه بر آن به درک عمیق تر در مورد ویدجت اندروید و توسعه ی اپلیکیشن اندروید خواهیم رسید. منتظر باشید.

 

 

 

 

 

پاسخ دهید