progress Dialog در اندروید

منتشرشده توسط حامد قنبری در تاریخ

progress Dialog یکی از مهترین ابزارهای برنامه نویسی است که برای نشان دادن میزان فرایند پیشرفت یک عملیات استفاده می شود. برای مثال وقتی که شما  در حال دانلود یا آپلود فایلی از اینترنت هستید با توجه به وجود تاخیر زمانی در انجام چنین عملیات هایی  و همچنین به منظور نشان دادن میزان پیشرفت آن از progress Dialog استفاده می شود. مطابق روال آموزش سایت ابتدا ساختار کلی این کلاس را بررسی کرده و سپس با ارائه مثالی، شما را به درک بهتری از این موضوع خواهیم رساند.

 

به دو طریق می توان progress  را در برنامه اجرا نمود. روش اول استفاده از ابزار progress bar و گنجاندن آن در لایوت مربوط به xml ، و روش دوم فراخوانی کلاس آن از طریق کدنویسی است. البته تفاوتی در استفاده از هریک از این دو روش دیده نمی شود ولیکن به جهت سهولت و پرهیز از اتلاف وقت و بهینه سازی برنامه، روش دوم روش مناسب و مطلوبتری است. آنچه در ذیل اشاره می شود فراخوانی آن از طریق کدنویسی است که ساختار آن را به تفصیل توضیح خواهیم داد.

    1-ProgressDialog progressDialog;
    2- progressDialog = new ProgressDialog(MainActivity.this , 
    R.style.mystyle);
    3-progressDialog.setMessage("آیا مایل به دانلود هستید");
    4-progressDialog.setIcon(R.drawable.alert);
    5-progressDialog.setTitle("alert");
    6-progressDialog.isIndeterminate();
    7-progressDialog.setCancelable(false);
    9-progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    10-progressDialog.getWindow().setGravity(Gravity.BOTTOM);
    11-progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,"Cancel",
    new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    12-progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "ok",
 new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
   13- progressDialog.show();

}

 

***در خط اول ابتدا کلاس ProgressDialog  را با متغیر مورد نظرمان تعریف می کنیم ، متغیری که می تواند در صورت فراخوانی کلاس اصلی،همانند آن، ویژگی های این کلاس را فراخوانی کند( متغیری که بهتر است بصورت public  و  سراسری تعریف گردد).


***در خط دوم کلاس اصلی  ProgressDialog در کلاس  MainActivity با استایلی(R.style.mystyle) که ما برای آن در نظر گرفته ایم فراخوانی می شود .


***خط سوم مربوط به پیام متنی است که هنگام ظاهر شدن دیالوگ به کاربر نشان داده می شود که پیام هایی  همچون “در حال بارگیری” ، سوالات و… مشخص می شود.


***خط چهارم مربوط به آیکنی است که هنگام اجرای دیالوگ  در بالای آن بعنوان علامت اصلی و نماد پیام دیالوگ شناخته می شود.


***خط پنچم مربوط به عنوان و موضوع دیالوگ است.


***خط ششم مربوط به قابلیت اندازه گیری بودن progressDialog است .


***خط هفتم مربوط به قابل کنسل بودن دیالوگ است. که دو حالت true  و false را برمی گرداند در صورت true بودن دیالوگ هر لحظه می تواند توسط کاربر لغو گردد اما در صوریتکه قابلیت کنسل بر روی false باشد تا زمان اتمام فرایند عملیات کاربر نمی تواند آن را لغو کند.


***خط نهم مربوط افقی بودن progressDialog  است که به هنگام دانلود یا لود بصورت خطی نشان داده می شود.


***خط دهم مربوط به لوکیشن و موقعیت دیالوگ است که می تواند در پایین ، وسط ، و بالا و در موقعیت های مختلف ظاهر شود.


***خط یازدهم مربوط به باتن و دکمه های است که به دو شکل positive  و nagative در دیالوگ ظاهر شود بطوری با تعریف کدهای مربوط به متد onclick ، با کلیک بر روی هریک از آنها عملیات خاصی انجام می شود. در این مثال کاربر با کلیک بر روی هریک از باتن ها progressDialog لغو می شود.


***خط دوازدهم هم همانند خط قبلی باتن با خصوصیت مثبت را به دیالوگ می افزاید.


***و نهایتاً در خط سیزدهم progressdialog برای کاربر نشان داده می شود.

مثال زیر فرایند  progressdialog  را با تاخیر 10 ثانیه ای نشان می دهد . اگر می خواهید فرایند اجرای آن را به هنگام دانلود یا آپلود مشاهده و مطالعه بفرمایید اینجا کلیک کنید.

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

   اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را MainActivity بگذارید. بعد از لود کامل برنامه، مستقیم به سراغ کلاس MainActivity  رفته و کدهای زیر را به آن اضافه کنید.

 

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       final ProgressDialog progressDialog;
        progressDialog = new ProgressDialog(MainActivity.this );
        progressDialog.setMessage("آیا مایل به دانلود هستید");
        progressDialog.setIcon(R.drawable.alert);
        progressDialog.setTitle("alert");
        progressDialog.isIndeterminate();
        progressDialog.setProgress(0);
        progressDialog.setMax(100);
        progressDialog.setCancelable(false);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.getWindow().setGravity(Gravity.BOTTOM);
        progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "ok",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        final int totalProgressTime = 100;
        final Thread t = new Thread() {
            @Override
            public void run() {
                int jumpTime = 0;

                while(jumpTime < totalProgressTime) {
                    try {
                        sleep(200);
                        jumpTime += 5;
                       progressDialog.setProgress(jumpTime);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        };
        t.start();
    }

}

 

حال نوبت به اجرای پروژه می رسد. اگر در اجرای پروژه ارائه شده مشکلی داشید با طرح سوالات خود در قسمت دیدگاه ها به پاسخ مورد نظر خود دست خواهید یافت.

کپی برداری از محتوای سایت psrd، ممنوع بوده و پیگرد قانونی دارد. (تنها استفاده شخصی کاربران ، مجاز است) (کپی برداری توسط سایر وب سایت ها  غیرقانونی بوده و در صورت رویت به ستادسازماندهی اطلاع داده خواهد شد).

 


0 دیدگاه

دیدگاهتان را بنویسید

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

-- بارگیری کد امنیتی --