یک پروژه ی اموزشی برای ساخت ویجت
سلام
چند وقت پیش یک پروژه ی ساده از نحوه ی ساخت ویجت برای خودم درست کردم تا هروقت خواستم تو برنامه هام از ویجت استفاده کنم ازش استفاده کنم از اونجایی که بعضی از دوستان تمایل داشتند اموزش کار با ویجت ها رو یاد بگیرند گفتم بزارمش اینجا تا بقیه هم استفاده کنند
برای اینکه راحت تر متوجه بشید چی به چیه هم یه اموزش خلاصه تا شب براش اماده می کنم و بعنوانه پاسخ همین پرسش درج می کنم
اینم لینک دانلود پروژه
اینم لینک کمکی ( اگر لینک بالا خراب بود )
یه هفته پیش !!! قول دادم که یک اموزش مختصر برای این پروژه بزارم ولی به دلیله مشغله ی فراوان یادم رفت الان یادم اومد گفتم تا دوباره یادم نرفته بیام اموزشش رو بزارم
این چیزی که می ذارم حاصل تجربیاتیه که این مدت بدست اوردم و ممکنه راه های بهتری هم برای کار با widget ها وجود داشته باشه و دوستان بلد باشند که در این صورت ازشون خواهش می کنم راهشون رو همینجا بگند تا من و بقیه هم استفاده کنیم
خب بهتره کم کم شروع کنیم :
برای قرار دادن ویجت در برنامه باید 3 تا فایل بسازید و چند خط کد هم به فایل manifest پروژتون اضافه کنید .
3 تا فایلی که باید به پروژه اضافه کنید رو در تصویر زیر می بینید .

پس یک پروژه به اسم widgetProject می سازیم.
توی این پروژه قراره یه ویجت بسازیم که شامل 2 تا textview و یک button هست .textview اول قراره زمان رو نشونمون بده و هدف از قرار دادنش توی پروژه اینه که بفهمیم چطور میشه ویجت ها رو هر چند ثانیه یا دقیقه آپدیت کرد .textview بعدی هم یه شمارنده است که از صفر شروع میشه و وقتی روی button کلیک می کنیم یکی به مقدارش اضافه میشه و هدف از قرار دانش هم اینه که بفهمیم چطور میشه رویداد کلیک کردن روی یه view رو در ویجت ها بکار برد.:
همونطور که در عکس بالا می بینید یه فایل xml به نام widget.xml توی پوشه ی layout می سازیم که این فایل رابط گرافیکی ویجت رو تشکیل میشه
ای دی ها رو به صورت زیر قرار بدید :
txtTime
txtCounter
btnCounter
حالا توی پوشه ی res یه پوشه ی دیگه به اسم xml درست کنید و یه فایل xml دیگه به اسم widget_info.xml درونش درست کنید این فایل اطلاعات مربوط به ویجتمون رو در بر می گیره ،درون این فایل رو مطابق شکل زیر پر کنید:

initialLayout : همون رابط گرافیکی ویجتمونه
minheight,minwidth : طول و عرض ویجت رو مشخص می کنه که طبق فرمول خاصی پر میشه به این ترتیب که لانچر اندروید خالص دارای 4 خانه ی افقی و 4 خانه ی عمودی است که شما می تونید از 1 تا 4 خانه را برای طول و عرض ویجت انتخاب کنید بعد از انتخاب ان را توی فرمول زیر قرار می دید و در نهایت سایز ویجت بدست میاد ( n در فرمول زیر نماد تعداد خانه ی انتخابی از 1 تا 4 است )
(n*74)-2
برای مثال اگر عرض ویجت 2 خانه و طول ان 3 خانه باشد اندازه ی عرض و طول به ترتیب 146 و 220 می شود
updatePeriodMillis : چرخه ی زمانی اپدیت ویجت ، البته برای قرار دادن مقداره آن باید به 2 نکته توجه کرد اول اینکه مقدار باید به میلی ثانیه وارد شود و دوم هم اینکه باید این مقدار بیش از 30 دقیقه یا 1800000 میلی ثانیه باشد در غیر اینصورت بصورت اتوماتیک مقدار ان 1800000 محاسبه می شود البته نگران نباشید اگر لازم باشه زودتر از این موقع ویجت اپدیت شود راهی وجود داره که بعدا بهش اشاره می کنیم.
حالا نوبته اینه که ویجت رو برای نرم افزار معرفی کنیم که این معرفی در فایل manifest.xml انجام میشه همونطور که در شکل زیر می بینید یه receiver معرفی می کنیم :
<receiver
android:name=".FirstAppWidget" //اسم کلاسه مربوط به مدیریت ویجت
android:label="@string/app_name" > //لیبل ویجت که در قسمت ویجت های گوشی نمایش داده میشه
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
<service android:name=".CounterService" /> //این سرویسه کارش چیزه دیگست ربطی به معرفی ویجت نداره
بعد از معرفی می رسیم به بخش قشنگ ماجرا که همون کدنویسی ویجت هست .کدنویسی رو توی یه کلاس به نام firstappwidget.java انجام می دیم که اونم چیزه پیچیده ای نداره و با خوندن کد ها به راحتی متوجهش می شید
امیدوارم که توضیحاتم مفید باشه :)
داداش دستت درد نکنه
چطور میشه از داخل برنامه مثلا با کلیک روی یک دکمه داخل اکتیویتی، ویجت در صفحه درست بشه؟
ممنون میشم اگه پاسخ بدی
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .