آموزش کار با ویجتها (widget) در اندروید
فیلم آموزش کار با ویجتها (widget) در اندروید
متن به همراه عکس آموزش کار با ویجتها (widget) در اندروید
تعریف ویجت:
مواردی هستند که میتوانیم داخل برنامه نویسی اندروید از آنها استفاده کنیم. برای مثال وقتی دستمان را روی صفحهی اصلی موبایل خود نگه داریم، منویی باز میشود که در بین گزینهها ویجت نیز قرار دارد. اگر آن را انتخاب کنیم، یک سری از ویجتها بر اساس نرم افزار که در اختیار داریم را به ما نشان میدهد.
در واقع میتوان گفت ویجتها shortcut در اپلیکیشنها هستند که به ما امکان استفاده از امکانات اپلیکیشن را روی صفحهی اصلی موبایل میدهد.
برای مثال میتوانیم گزینهی clock را انتخاب کنیم و به صفحه اضافه کنیم.
نحوهی ساخت ویجت:
ابتدا یک پروژهی جدید به اسم ویجت میسازیم و سپس روی گزینهی app کلیک راست میکنیم و مسیر زیر را طی میکنیم:
app>New>Widget>App Widget
صفحهای به نام New Android Component برایمان باز میشود که مواردی را به ما نشان میدهد:
1_ Class Name: در ردیف اول میتوانیم اسم کلاسی که میخواهیم کدهای مربوط به ویجت را در آن بنویسیم انتخاب کنیم.
2_ Placement: در ردیف دوم مکان نمایش دادن ویجت در موبایل را انتخاب میکنیم. در این قسمت 3 گزینه برای انتخاب داریم که به صورت زیر است:
- Home_screen and Keyguard: ویجت هم داخل صفحهی اصلی موبایل و هم داخل صفحهی قفل شده نشان داده میشود.
- Home_screen only: فقط روی صفحهی اصلی موبایل است.
- Keyguard only: روی صفحهی قفل موبایل که وقتی کاربر صفحهی موبایل خود را قفل میکند نشان داده شود. مثلا موزیک پلیرها حتی وقتی موبایل قفل هست، به صورت ویجت نمایش داده میشود و کاربر میتواند آهنگ را عوض کند.
3_ Resizeable: در ردیف سوم اگر این ویژگی فعال باشد امکان تغییر سایز ویجت را به کاربر میدهد. به عنوان مثال یک ویجت به صفحهی گوشی اضافه میکنیم و این ویژگی را برایش قرار میدهیم. مشاهده میکنید که اگر روی ویجت یک بار کلیک کرده و آن را نگه داریم، در اطراف ویجت دایرههایی قرار میگیرد که مخصوص تغییر سایز و اندازهی آن است.
گزینههای مربوط به Resizaable:
- Horizontally and Vertically: به صورت افقی و عمودی امکان تغییر سایز داده میشود.
- Only Horizontally: فقط به صورت افقی امکان تغییر سایز داده میشود.
- Only Vertically: فقط به صورت عمودی امکان تغییر سایز داده میشود.
- Not Resizaable: امکان تغییر سایز به کاربر داده نمیشود.
4_ Minimum Width و Minimum Height: در ردیف چهارم و پنجم میتوانیم طول و عرض ویجت را مشخص کنیم.
5_ Source Languege : این قسمت مربوط به زبان برنامهنویسی میشود که با آن کاری نداریم.
حال روی گزینهی Finish کلیک میکنیم و کلاس جدید اضافه میشود.
در این قسمت 3 بخش به پروژهی ما اضافه میشود:
- NewAppWidget
- xml
- xml
NewAppWidget: مربوط به کدنویسی قسمت جاوا میشود. کدهای این قسمت نشان میدهد که ظاهری که برای ویجت ساختهایم، وقتی که اجرا شود چه کاری را انجام دهد. به صورت پیش فرض 4 متد داخل آن وجود دارد:
updateAppWidget .a: این متد به ما این اجازه را میدهد که تغییرات مربوط به قسمت گرافیکی را مدیریت کنیم. مثلا تکست ویوها را تعریف کنیم و موارد دیگر. داخل این متد به صورت پیش فرض یک تکست تعریف و مقدار دهی شده که آن مقدار را از داخل string.appwidget_text خوانده است و از طریق مسیر زیر میتوانیم این مقدار را مشاهده کنیم.
res>values>strings.xml
برای این که بخواهیم تکست ویوهایمان را تعریف کنیم، نمیتوانیم مشابه حالتهای قبل این کار را انجام دهیم. داخل ویجتها باید از متغیری استفاده کنیم به اسم RemoteViews. این متغیر به ما این اجازه را میدهد که ویوهای اپلیکیشنمان را در یک جایی بیرون از اپلیکیشن استفاده کنیم.
به طور مثال به صورت پیش فرض یک تکست ویو داریم که آن را بیرون از اپلیکیشن یعنی روی صفحهی اصلی گوشی کاربر استفاده کردیم. اگر بخواهیم از ویوی یک اپ داخل یک اپ دیگر استفاده کنیم نیز از این متغیر استفاده میکنیم. به عبارتی بعضی از اپها هستند که یک دکمهای را در اختیار ما قرار میدهند که میتوانیم از آن در جاهای دیگر استفاده کنیم.
نحوهی کار RemoteViews:
در همان متد updateAppWidget ، RemoteViews را مینویسیم، سپس یک اسم دلخواه انتخاب میکنیم و new RemoteViews را مینویسیم. در این قسمت دو ورودی از ما میگیرد ورودی اول context و ورودی دوم لایهای است که ویوها داخل آن هستند.
حال برای این که ویوهای داخل را تعریف کنیم از متد setTextViewText استفاده میکنیم. این متد نیز دو ورودی از ما میگیرد. ورودی اول آیدی ویو و ورودی دوم مقداری که قرار است نمایش داده شود که ورودی دوم را میتوانیم به صورت دستی تغییر دهیم.
میتوانیم در داخل پروژه یک ویژگی دیگر مثلا یک باتن اضافه کنیم و سپس در این متد اضافه و آن را تعریف کنیم و حتی ویوی باتن و یا خاصیت کلیک شدن برای باتن را در این قسمت اضافه کنیم.
onUpdate .b: زمانی که قرار است آپدیت انجام شود، از این متد استفاده میشود که به صورت پیش فرض هر یک روز یک بار این متد اجرا میشود. داخل این متد یک for قرار داده شده که appWidgetId را بررسی میکند و به ازای آن عملیاتی را انجام میدهد. در واقع به هر یک از ویجتهای مربوط به برنامه یک آیدی اختصاص داده میشود که با آن بتوانیم ویجتها را مدیریت کنیم که این همان appWidgetId است. داخل for متد updateAppWidget صدا زده شده که 3 تا وروی دارد:
- Context: جایی که ویجت وجود دارد که میشود صفحهی اصلی یا قفل گوشی کاربر
- appWidgetManager: این متد به ما این اجازه را میدهد که ویجت را مدیریت کنیم و تغییراتی که لازم دارد را انجام دهیم. مثلا تکست ویو یا باتنی که داخل ویجت هست را تعریف کنیم و یا موارد دیگر را مدیریت کنیم.
- appWidgetId: آیدی که به ویجت نسبت میدهیم.
onEnable .c: این متد زمانی اجرا میشود که اولین ویجت را به صفحهی گوشی اضافه کنیم. ممکن است در داخل اپلیکیشن ما بسته به نیازی که دارد، بیشتر از یک ویجت داشته باشد. کاربرد این متد زمانی است که میخواهید یک سری تغییرات را ایجاد کنید که در همهی ویجتهای مربوط به برنامه ثابت است. مثلا اگر هر دو ویجت ساعت را به صفحهی نمایشگر اضافه کنیم، باید هر یک دقیقه ویجت آپدیت شود. در حالت عادی باید برای هرکدام کدنویسی انجام دهیم، اما اگر ویژگی آپدیت هر یک دقیقه را داخل این متد قرار دهیم، دیگر نیازی به دو بار کدنویسی نیست و برای هردو ویجت قابل اجرا است.
onDisable .d: این متد زمانی اجرا میشود که کاربر آخرین ویجت را به صفحهی نمایشگر خود اضافه کند. این متد نیز همانند متد onEnable مربوط به ویژگیهایی است که در همهی ویجتهای اپلیکیشن ثابت است.
new_app_widget.xml : مربوط به بخش گرافیکی ویجت میشود که به صورت پیش فرض یک تکست ویو داخل آن وجود دارد که به صورت پیش فرض عبارت Example را با بک گراند آبی نشان میدهد. میتوانیم در این جا آنها و مقادیر دیگر را تغییر دهیم.
در این قسمت میتوانیم ویژگیهای دیگری را نیز اضافه کنیم. مثلا میتوانیم یک باتن یا تکست اضافه کنیم و موارد دیگر. نکتهی قابل توجه این است که برای ویجتها نمیتوانیم از تمامی ویوهایی که داخل لایه است استفاده کنیم. ویجتها برای محدودیت مصرف انرژی، یک سری محدودیتهای گرافیکی دارند، به همین جهت نمیتوانیم از تمام ویژگیها در آنها استفاده کنیم. از بعضی موارد مثل باتن، تکست ویو، ریسایکلر ویو و موارد محدود دیگر میتوانیم استفاده کنیم.
xml :داخل آن فایلی قرار دارد که یک سری توضیحات مربوط به پروژهی ما داخل آن نوشته شده است. اگر داخل پوشهی new_app_widget_info.xml برویم، توضیحات مربوط به Home_screen and Keyguard مشخص شده است:
- در قسمت minwidth و minheight ابعادی که برای ویجت در نظر گرفتهایم را نشان میدهد. بهتر است برای تغییرات از این قسمت استقاده نکنیم.
- قسمت بعدی مربوط به previewimage است که که مربوط به عکسی است که در صفحه نمایشگر به عنوان ویجت به ما نشان داده میشود به صورت پیش عکسی به نام Example را نشان میدهد که میتوانیم آن را از طریق قسمت drawable تغییر دهیم
- قسمت resizeMode نیز مربوط به سایز و اندازهی ویجت میشود که در اینجا مشخص میکنیم ابعاد ویجت براساس طول و عرض و یا یکی از آنها تغییر کند
- در قسمت updateaPariodMillia عدد 86400000 را نشان میدهد که زمان حسب میلی ثانیه است درواقع این عدد میشود یک شبانه روز که نشان دهندهی این است که ویجت هر چند وقت یک بار آپدیت شود که به صورت پیش فرض روی هر یک روز یک بار قرار دارد این زمان را میتوانیم تغییر دهیم حداقل زمانی که میتوان برای آپدیت در نظر گرفت 30 دقیقه است حال اگر بخواهیم در کمتر از هر 30 دقیقه ویجت را آپدیت کنیم میتوانیم در داخل کدنویسی از تایمر استفاده کنیم و یا یک دکمهای اضافه کنیم که وقتی روی آن کلیک شده عملیات آپدیت انجام شود برای مثال اگر ویجت مربوط به ساعت را به صفحهی نمایشگر اضافه کنیم مشاهده میکنیم که عقربهی دقیقه شمار هر یک دقیقه آپدیت میشود و جلو میرود که برای اینکار در کدنویسی از تایمر استفاده کردیم.
- در قسمت widgetCatogory میتوانیم مشخص کنیم که ویجت در کجا نمایش داده شود که به صورت پیش فرض گزینهی home_screen است.
مطالب زیر را حتما بخوانید
-
نحوهی کار با ویدئوپلیر (Video Player) از طریق پوشهی raw
7.42k بازدید
-
آلرت دیالوگ (AlertDialog) چیست و نحوهی کار با آن چگونه است؟
7.02k بازدید
-
اسنکبار (Snackbar) در اندروید
4.56k بازدید
-
ّFloating action Button (فلوتینگ اکشن باتن) در اندروید
4.39k بازدید
-
نحوهی کار با فریم لیوت (FrameLayout)
4.83k بازدید
-
یک روش برای تمرکز در برنامهنویسی
3.27k بازدید
دیدگاهتان را بنویسید