ברוך הבא לדוגמה של Android ProgressDialog. במדריך זה נלמד כיצד ליצור ProgressDialog ב-Android הכולל ProgressBar. נדון באופן מעמיק בהבחנה בין ProgressDialog ל-ProgressBar.
Android ProgressDialog
Android ProgressDialog הוא הרחבה של AlertDialog. כדי לדעת עוד על AlertDialog, בדוק את המדריך שלו כאן. Android ProgressDialog הוא תיק תיק/חלון דיאלוג שמציג את התקדמות המשימה. Android Progress Dialog הוא כמעט זהה ל-ProgressBar, עם ההבחנה שהוא מוצג כדיאלוג. כדי ליצור ProgressDialog להצגת ProgressBar, יש ליצור אותו כך:
ProgressDialog progress = new ProgressDialog(this);
ההבחנה בין Android ProgressDialog ל-ProgressBar
- ProgressBar הוא View (כמו TextView, ImageView, Button וכו '), שיכול לשמש בתצוגה כדי להראות התקדמות. ProgressBar משמש לציון שמשהו באפליקציה עדיין טוען כל עוד המשתמש יכול להתקשר עם חלקים אחרים.
- ProgressDialog הוא דיאלוג עם ProgressBar 'מובנה'. ProgressDialog משמש כאשר רוצים למנוע מהמשתמש להתקשר עם האפליקציה במהלך המתנה. האספקט של הדיאלוג מקורר את המשתמש מלעשות כלום עד שהוא מבוטל\סגור
מאפייני ProgressDialog ב-Android
כמה מאפייני ProgressDialog החשובים ביותר ב-Android מוצגים להלן.
- setMessage() : משמש להצגת הודעה למשתמש. לדוגמא: טוען…
- setTitle() : משמש להגדרת כותרת לתיבת הדווח
- setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) : משמש להצגת סרגל התקדמות אופקי בתיבת הדווח
- setProgressStyle(ProgressDialog.STYLE_SPINNER) : משמש להצגת סרגל התקדמות מעגלי\סיבובי בתיבת הדווח
- setMax() : משמש להגדרת הערך המקסימלי
- getProgress() : משמש לקבלת הערך הנוכחי של התקדמות במספרים
- getMax() : מחזיר את הערך המקסימלי של ההתקדמות
- show(Context context, CharSequence title, CharSequence message) : זוהי שיטה סטטית, משמשת להצגת דיאלוג התקדמות
- incrementProgressBy(int diff): השיטה הזו מגבירה את מוד התקדמות בפרמטר המועבר כערך שונה
במדריך זה נפתח יישום שמציג חלון התרחשות מתקדם המכיל בר התקדמות אופקי המתרחש אחרי כל 200 מילישניות
מבנה פרויקט ProgressDialog של Android
דוגמה לProgressDialog של Android
קובץ activity_main.xml
מכיל לחצן שקורא לדיאלוג התרחשות בלחיצה כפי שמוצג בקוד xml שלמטה: activity_main.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Start ProgressDialog"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="57dp" />
</RelativeLayout>
קובץ MainActivity.java ניתן למצוא למטה. MainActivity.java
package com.journaldev.progressdialog;
import android.app.ProgressDialog;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button button;
ProgressDialog progressDoalog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDoalog = new ProgressDialog(MainActivity.this);
progressDoalog.setMax(100);
progressDoalog.setMessage("Its loading....");
progressDoalog.setTitle("ProgressDialog bar example");
progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDoalog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (progressDoalog.getProgress() <= progressDoalog
.getMax()) {
Thread.sleep(200);
handle.sendMessage(handle.obtainMessage());
if (progressDoalog.getProgress() == progressDoalog
.getMax()) {
progressDoalog.dismiss();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
progressDoalog.incrementProgressBy(1);
}
};
});
}
}
הקוד הבא מפעיל את המטפל בו אנו כותבים את הקוד להגברת בר התקדמות.
handle.sendMessage(handle.obtainMessage());
למטה נמצא הווידאו הפלט כאשר תפעיל את דוגמת האפליקציה לדוגמת תיבת ההתקדמות של אנדרואיד באמולטור. זה מסיים את מדריך דוגמת ProgressDialog של אנדרואיד. ניתן להוריד את הפרוייקט הסופי של פרויקט ProgressDialog של אנדרואיד מהקישור למטה.
Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example