PDA

View Full Version : Progress Dialog



abdoullah.aberi
جمعه 10 آذر 1391, 08:28 صبح
دوستان طریقه استفاده از Progress Dialog رو می تونین برام توضیح بدین یعنی چطوری می تونم اجراش کنم در برنامه ؟

shahin bahari
جمعه 10 آذر 1391, 15:39 عصر
شما اول یه شی از جنس ProgressDialog میسازید و با تابع show اون رو نشون میدید.
برای تعریف این شی:
ProgressDialog progress=new ProgressDialog(MainActivity.this);
برای تعیین کردن عنوان دیالوگ:
progress.setTitle("Scaning...");
برای عنوان کردن استایل. حالت خطی هست و حالت دایره ای( دایره ای برای حالت انتظار فقط به کار میره ولی خطی هم برای انتظار و هم برای نشان دادن مقدار) :
progress.setProgressStyle(ProgressDialog.STYLE_HOR IZONTAL);
برای تعین کردن پیغام دیالوگ:
progress.setMessage("Wait for ...");
برای تعیین حالت کاری. اگر فالس باشد یعنی در progress مقداری نشان میده اما اگر true باشه progress فقط میچرخه و حالت لودینگ داره.
progress.setIndeterminate(false);
با این کد تعیین میکنیم که دیالوگ قابل کنسل شدن با دکمه بک یا.... هست یا نه:
progress.setCancelable(false);
با این کد میشه دیالوگ رو با لمس بیرون از دیالوگ کنسل کرد:
progress.setCanceledOnTouchOutside(true);
برای تعیین مقدار حداکثر progress : به صورت دیفالت 100 هست.
progress.setMax(200);
برای تغییر مقدار progress :
progress.setProgress(15);
برای نمایش دیالوگ هم:
progress.show();
برای بستن دیالوگ هم: تابع کنسل هم همین کار رو میکنه با این تفاوت که متد onCancel رو هم فراخوانی میکنه.
progress.dismiss();
کلی تابع دیگه مثل تعیین آیکون و تعریف دکمه و.... هم هست که از تو هلپ eclipse میتونید ببینید.

Modernidea
جمعه 10 آذر 1391, 16:53 عصر
سلام

کپی فایل همراه با Progress:

// Params are input and output files, progress in Long size of
// data transferred, Result is Boolean success.
public class MyTask extends AsyncTask<File,Long,Boolean> {
ProgressDialog progress;

protected void onPreExecute() {
progress = ProgressDialog.show(ctx,"","Loading...",true);
}
protected Boolean doInBackground(File... files) {
copyFiles(files[0],files[1]);
return true;
}

protected void onPostExecute(Boolean success) {
progress.dismiss();
// Show dialog with result
}

protected void onProgressUpdate(Long... values) {
progress.setMessage("Transferred " + values[0] + " bytes");
}
}


برای اجرا:

MyTask task = new MyTask();
task.execute(src,dest);


منبع:http://stackoverflow.com/a/6053982/478162

abdoullah.aberi
جمعه 10 آذر 1391, 20:34 عصر
مرسی از دوستان برنامه نویس بایت کمکی که کردن مشیه راجبه این کد توضیح بدین و اینکه راجبه onClickListener هم یه توضیحاتی می خواستم بازم مرسی :
public void onClick(View v){
final ProgressDialog progress = ProgressDialog.show(this,"Please wait","Loading...",true);
new Thread(newRunnable(){
public void run(){
try{
Thread.sleep(5000);
progress.dismiss();
}catch(InterruptedException e)
e.printstatcktrace();
}}
}).start();
}

shahin bahari
جمعه 10 آذر 1391, 22:05 عصر
onClickListener موقعی که کلیک روی یه ویجت مثل دکمه یا.... شد فعال میشه. مثلا برای نوشتن event برای کلیک روی یک دکمه:
btn.setOnClickListener(btnListener);
که آرگومانش اسم یه تابع از جنس onClickListener هست
private OnClickListener btnListener = new OnClickListener() {
public void onClick(View v ){
//do some thing here
} };
البته تو خود آرگومان هم میشه تابع رو تعریف کرد.
تو این برنامه که گزاشتید یه thread جدید میسازه و توی 5 ثانیه اون رو متوقف میکنه.تو این مدت توقف ProgressDialog نمایش داده میشه.
لطفا اگر میخواید کدی رو قرار بدید از تگ ها استفاده کنید درست نمایش داده بشه و راحت بشه خوند.

abdoullah.aberi
شنبه 11 آذر 1391, 00:43 صبح
به روی چشم اقا شاهین بعد میشه توضیح بدین راجبه InterruptedException و printstatchtrace مرسی

shahin bahari
شنبه 11 آذر 1391, 23:22 عصر
منظورتون printstacktrace هستش؟
این تابع توی قسمت catch بلوک try/catch قرار میگیره و یه تعداد log راجع به exception که رخ داده ایجاد میکنه تا بتونید راحت تر مشکل رو پیدا کنید. فکر نمیکنم به جز دیباگینگ کار دیگه ای انجام بده.
در مورد InterrupedException هم نمیدونم که مربوط به exception چی میشه ولی هرچی که باشه گرفتنش مثل بقیه Exception ها هست. توضیحاتی که سایت اوراکل داده رو هم یه نگاه کنید شاید به کارتون اومد:
http://docs.oracle.com/javase/6/docs/api/java/lang/InterruptedException.html

abdoullah.aberi
یک شنبه 12 آذر 1391, 01:21 صبح
دوستان من میخوام تو یک alert button بتونم از ProgressDialog استفاده کنم چجوری میشه این کارو انجام داد ؟

Modernidea
سه شنبه 14 آذر 1391, 21:13 عصر
سلام

alert button چیه؟

abdoullah.aberi
چهارشنبه 15 آذر 1391, 11:33 صبح
alert button دستورات مرتیط با دیالوگ هستش دوست عزیز یعنی شما با این دستور می تونین یک دیالوگ تولید و از ان استفاده کنید میتوتید برید تو سایت android.com و کلیه دستورات مربوط رو ببینید مانند شکل زیر

http://www.mathcs.org/java/android/images/alert_dialog_two_buttons.gif

shahin bahari
چهارشنبه 15 آذر 1391, 20:40 عصر
منم تا حالا alert button رو نشنیده بوم. یه دیالوگ معمولی تعریف میشه و 2 تا دکمه رو براش رجیستر میکنید میشه شکل همین...

دوستان من میخوام تو یک alert button بتونم از ProgressDialog استفاده کنم چجوری میشه این کارو انجام داد ؟شما progress dialog رو تعریف کنید و برای اون دکمه تعریف کنید. تابع setButton از کلاس ProgressDialog برای این کار هست.
امتحانش نکردم اما طبق توضیحش به کارتون میاد:

public void setButton (int whichButton, CharSequence (http://barnamenevis.../../reference/java/lang/CharSequence.html) text, DialogInterface.OnClickListener (http://barnamenevis.../../reference/android/content/DialogInterface.OnClickListener.html) listener)

Added in API level 3 (http://barnamenevis.../../guide/topics/manifest/uses-sdk-element.html#ApiLevels)

Set a listener to be invoked when the positive button of the dialog is pressed.

Modernidea
پنج شنبه 16 آذر 1391, 00:35 صبح
alert button دستورات مرتیط با دیالوگ هستش دوست عزیز یعنی شما با این دستور می تونین یک دیالوگ تولید و از ان استفاده کنید میتوتید برید تو سایت android.com و کلیه دستورات مربوط رو ببینید مانند شکل زیر

http://www.mathcs.org/java/android/images/alert_dialog_two_buttons.gif

سلام
منظور شما از alert button همان alert dialog هست؟ من چیزی در مورد alert button پیدا نکردم!

abdoullah.aberi
پنج شنبه 16 آذر 1391, 10:27 صبح
درسته من اشتباه نوشتم همون alert dialog منظورم بود من گارم حل شد با استفاده از دستور button و بعد استفاده از دستورات ProgressDialog در یکی از بلوک های دستور button ..... درسته دوستان
تشکر از اینکه کمکم کردین ممنون