دانلود فایل و نمایش میزان پیشرفت دانلود با Progress Bar

Progress Bar

خلاصه آموزش:

  • نوار پیشرفت(Progress Bar) در برنامه نویسی اندروید

  • نمایش پیشرفت دانلود با پروگرس بار

  • آشنایی با کلاس asynctask

  • ساخت پروژه دانلود فایل از اینترنت با استفاده از Progress Bar

وقتی شما در حال آپلود یا دانلود فایل از اینترنت هستید، بهتر است برای نشان دادن پیشرفت دانلود / آپلود به کاربر از نوار پیشرفت(Progress Bar) استفاده کنید.در مثال زیر، در حالی که برنامه مشغول دانلود یک عکس از وب میباشد،از Progress Bar استفاده می کنیم و یک نوار پیشرفت به کاربر نشان میدهد.(تصویر یک بار دانلود میشود).در زمان تکمیل شدن دانلود من آنرا در یک imageView نشان خواهم داد.

مثال

این مثال نحوه ی استفاده از نوار پیشرفت(Progress Bar) را در چند مرحله ی ساده به صورت عملی توضیح می دهد.

با استفاده از اندروید استودیو یک پروژه ی جدید با نام ProgressBar تحت بسته ی com.example.progressbar ایجاد کنید.

در زیر محتوای فایل res/layout/activity_main.xml آورده شده است.

کد های زیر نیز مربوط به فایل java/com.example.progressbar/MainActivity.java می شود که در آن از کلاس DownloadFileFromURL برای دانلود فایل از اینترنت استفاده شده است،این کلاس خود از کلاس asynctask ارث بری میکند و پیشرفت دانلود را در Progress Bar نمایش میدهد.

حال بهتر است کمی در مورد کلاس AsyncTask صحبت کنیم.برای انجام کارهای زمانبر باید از چندنخی استفاده کنیم و در اینجا؟ AsyncTask

بعد از پایان تمام متد ها و قبل از پایان کلاسمون یه کلاس جدید می سازیم و اون رو از AsyncTask ارث بری می کنیم:

می بینید که سه تا فیلد اون بالا هست اولیش params هست یعنی پارامترهایی که میخوایم به تردمون بدیم مثلا یک متن، باید نوع و نامش رو مشخص کنیم که چون متن هست String تعریفش می کنیم.

دومی progress هست ، دیدید بعضی برنامه ها هنگام دانلود فایل یک پروگرس بار رو نمایش میدن و کامل میشه؟ بالای اون هم مثلا نوشته “در حال دانلود ۵% ” و عدد مدام عوض میشه ، ما نوع این عدد و یا متنی که بخوایم نمایش بدیم رو اینجا مشخص می کنیم که ما چون باز متن استفاده میکنیم String  تعریفش میکنیم.البته میتوان از عدد هم استفاده کرد.که در اون صورت int تعریف می کنیم.

سومی Result هست، نتیجه کار نهایی مثلا ما فایل عکس رو دانلود میکنیم و میخوایم در نهایت در imageView نمایش دهیم پس نیاز داریم به آدرس محل ذخیره فایل، که اون رو داخل Result قرار می دیم . پس این رو هم در اینجا String  میزاریم تا نتیجه رو به صورت متن بهش بدیم .

بعد هم متدهای لازم این کلاس رو وارد می کنیم:

(برای وارد سازی کلاس های الزامی در اندروید استودیو alt+enter و در اکلیپس ctrl+f1 رو هنگامی که اشاره گر برروی نام کلاس قرار دادید فشار بدید)

متد doInBackground برای انجام کار الزامی هست ، این متد همونطور که ابتدا مشخص کردیم پارامترهای String می گیره و کار اصلی رو انجام میده

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

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

این متد همونطور که قبلا مشخص کردیم String میگیره.

و در نهایت میخوایم دیالوگ رو مخفی کنیم:

این متد هم مشخص کردیم که String بگیره پس نتایج ارسالی از طرف doInBackground هنگام پایان کار به این متد داده میشه.

 

در زیر محتوای فایل AndroidManifest.xml آورده شده است که در آن به دو مجوز نیاز داریم یکی مجوز دسترسی به اینترنت و دیگری مجوز نوشتن در sdcard

برای دریافت این دو مجوز از کدهای زیر در میان کدهای AndroidManifest.xml استفاده میکنیم.

حال کدهای کامل فایل AndroidManifest.xml را در برنامه تان قرار دهید.

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

android download Progress Bar

بر روی دکمه کلیک کنید تا روند دانلود فایل آغاز شود.

دانلود کردن فایل و نمایش میزان پیشرفت کار با Progress Bar

 

 

 

 

 

 

 

 

One thought on “دانلود فایل و نمایش میزان پیشرفت دانلود با Progress Bar”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *