آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

یک پروژه ی اموزشی برای ساخت ویجت

OmidAhmadian  12 سال پیش  10 سال پیش
+45 0

سلام
چند وقت پیش یک پروژه ی ساده از نحوه ی ساخت ویجت برای خودم درست کردم تا هروقت خواستم تو برنامه هام از ویجت استفاده کنم ازش استفاده کنم از اونجایی که بعضی از دوستان تمایل داشتند اموزش کار با ویجت ها رو یاد بگیرند گفتم بزارمش اینجا تا بقیه هم استفاده کنند 
برای اینکه راحت تر متوجه بشید چی به چیه هم یه اموزش خلاصه تا شب براش اماده می کنم و بعنوانه پاسخ همین پرسش درج می کنم 

اینم لینک دانلود پروژه

اینم لینک کمکی ( اگر لینک بالا خراب بود )

0 0
دمت گرم (12 سال پیش)
0 0
عالیه ممنون (12 سال پیش)
0 0
آقا یه سوال. روش ساخت ویجت ها ثابته؟ یعنی با یه روش میشه هر نوع ویجتی ساخت؟ (12 سال پیش)
0 0
دم همه ی اونایی که حاضرن اطلاعات و معلوماتشون رو با بقیه شر کنن گرم (12 سال پیش)
0 0
روش ساخت ویجت ها ثابت نیست ولی اساس و پایه ی همشون یکیه (12 سال پیش)
0 0
خیلی ممنون دمت گرم:) (12 سال پیش)
0 0
آقا خدا خیرت بده (12 سال پیش)
0 0
دم اپن سورس گرم دم اشتراک گذاری گرم. فقط چون upload.ir زود حذف میشه بهتره جای دیگه ای آپ کرد تا همه ی دوستان استفاده کنند. (12 سال پیش)
0 0
خیلی خوبه. تشکر همه جوره. (12 سال پیش)
0 0
بگید کجا اپلود کنم من همونجا اپلود می کنم (12 سال پیش)
0 0
اپالود بوی اپ کن.من که دانلود کردم عالی بود (12 سال پیش)
0 0
با سلام اين لينك مثل اينكه خراب شده دانلود نميشه لدفن يه جا ديگه آپ كنيد. ممنون. (12 سال پیش)
0 0
لینک کمکی اضافه شد (12 سال پیش)
0 0
اینم لینک سوم لینک (12 سال پیش)
0 0
تشکر (12 سال پیش)
0 0
ویجت ها در اندروید کامل نیستند و دارای نواقص زیادی هستن. برای مثال خیلی از کارها رو نمیشه در ویجت ها انجام داد و یا اگر بشه انجام داد باید خیلی راهها رو طی کرد یا یه چیزهایی رو دور زد. بعضی از چیزهای ساده که میشه در یه اکتیویتی ساخت به هیچ وجه قابل پیاده سازی در ویجت نیست. در کل بعضی دلایل باعث میشه که راههای متفاوتی برای ساخت ویجت وجود داشته باشه. به نظر من استاندارد نبودن راههای ساخت ویجت باعث شده جناب آقاجانی تمایل به آموزش این بحث نداشته باشه. به هر حال از بیان راهتون ممنونم و امیدوارم بهترین راهها رو برای استفاده دیگران در اینجا شرح بدید. (12 سال پیش)
0 0
عالی بود (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
OmidAhmadian  12 سال پیش
+11 0

یه هفته پیش !!! قول دادم که یک اموزش مختصر برای این پروژه بزارم ولی به دلیله مشغله ی فراوان یادم رفت الان یادم اومد گفتم تا دوباره یادم نرفته بیام اموزشش رو بزارم

این چیزی که می ذارم حاصل تجربیاتیه که این مدت بدست اوردم و ممکنه راه های بهتری هم برای کار با 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  انجام می دیم که اونم چیزه پیچیده ای نداره و با خوندن کد ها به راحتی متوجهش می شید


امیدوارم که توضیحاتم مفید باشه :)

0 0
مفید بود تشکر (12 سال پیش)
0 0
خیلی ممنون.(هر چقدم که ویجت تو اندروید مشکل داشته باشه گاهی وقتا واسه بعضی از اپلیکیشنا وجودش میتونه مفید باشه :) . )آموزش خوبی بود ،رفیق... دمت گرم... (12 سال پیش)
0 0
امید جان خسته نباشی دلاور خیلی ممنونم خیلی ممنونم . ادامه بده لدفن :) (12 سال پیش)
0 0
امیدوارم این تاپیک خیلی قشنگتر از اینی که هست بشه ... (12 سال پیش)
0 0
توضیحات عالی بودن حیف که نیمه تمام ماند.... (11 سال پیش)
0 0
میشه آموزش رو ادامه بدید؟ ممنون میشیم (10 سال پیش)
پاسخ به سوال 
moji19  10 سال پیش
0 0

داداش دستت درد نکنه

چطور میشه از داخل برنامه مثلا با کلیک روی یک دکمه داخل اکتیویتی، ویجت در صفحه درست بشه؟

ممنون میشم اگه پاسخ بدی 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .