Học ProgressBar trong lập trình Android

p_erudite

New Member
Chúng tôi có thể hiển thị các hộp thoại android thanh tiến trình để hiển thị trạng thái của công việc đang được thực hiện ví dụ tải tập tin, phân tích tình trạng của công việc vv. Trong ví dụ lập trình android này, chúng tôi đang hiển thị hộp thoại tiến triển cho giả hoạt động tập tin tải về.

Ở đây chúng ta đang sử dụng lớp android.app.ProgressDialog để hiển thị thanh tiến trình. Android ProgressDialog là lớp con của lớp AlertDialog. Lớp ProgressDialog cung cấp phương pháp để làm việc trên thanh tiến trình như setProgress(), setMessage(), setProgressStyle(), setMax(), show() vv Các phạm vi tiến bộ của Progress Dialog là 0-10.000.

Hãy xem một ví dụ đơn giản để hiển thị thanh tiến trình trong Android.
Mã:
[/SIZE][/COLOR][/FONT]
[SIZE=4][FONT=Georgia][COLOR=rgb(20, 20, 20)]ProgressDialog progressBar = new ProgressDialog(this); progressBar.setCancelable(true);//you can cancel it by pressing back button progressBar.setMessage("File downloading ..."); progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressBar.setProgress(0);//initially progress is 0 progressBar.setMax(100);//sets the maximum value 100 progressBar.show();//displays the progress bar

Android Progress Bar Example sử dụng ProgressDialog

Hãy xem một ví dụ đơn giản để tạo ra thanh tiến trình sử dụng lớp ProgressDialog. Kéo một nút từ pallete, bây giờ các tập tin activity_main.xml sẽ trông như thế này:

File: activity_main.xml
Mã:
<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"[/SIZE][/COLOR][/FONT]
[SIZE=4][FONT=Georgia][COLOR=rgb(20, 20, 20)]
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="116dp"
android:text="download file" />

</RelativeLayout>




Lớp Activity

File: MainActivity.java

Mã:
package com.example.progressbar1;[/SIZE][/COLOR][/FONT]
[SIZE=4][FONT=Georgia][COLOR=rgb(20, 20, 20)]
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button btnStartProgress;
ProgressDialog progressBar;
private int progressBarStatus = 0;
private Handler progressBarHandler = new Handler();
private long fileSize = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButtonClick();
}
public void addListenerOnButtonClick() {
btnStartProgress = (Button) findViewById(R.id.button1);
btnStartProgress.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// creating progress bar dialog
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(true);
progressBar.setMessage("File downloading ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.show();
//reset progress bar and filesize status
progressBarStatus = 0;
fileSize = 0;

new Thread(new Runnable() {
public void run() {
while (progressBarStatus < 100) {
// performing operation
progressBarStatus = doOperation();
try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
// Updating the progress bar
progressBarHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressBarStatus);
}
});
}
// performing operation if file is downloaded,
if (progressBarStatus >= 100) {
// sleeping for 1 second after operation completed
try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
// close the progress bar dialog
progressBar.dismiss();
}
}
}).start();
}//end of onClick method
});
}
// checking how much file is downloaded and updating the filesize
public int doOperation() {
//The range of ProgressDialog starts from 0 to 10000
while (fileSize <= 10000) {
fileSize++;
if (fileSize == 1000) {
return 10;
} else if (fileSize == 2000) {
return 20;
} else if (fileSize == 3000) {
return 30;
} else if (fileSize == 4000) {
return 40;//you can add more else if
} else{
return 100;
}
}//end of while
return 100;
}//end of doOperation

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}


Kết quả:






 
Загрузка...

Members online

No members online now.

Forum statistics

Threads
261,412
Bài viết
336,822
Thành viên
39,962
Thành viên mới nhất
gổ Hà Nguyễn
Chuyển nhà trọn gói | Xe tải chở hàng giá rẻ | thi công bảng hiệu hộp đèn quảng cáo | Chuyển nhà trọn gói Bình Dương | Thi công bảng hiệu hộp đèn | thi công nhôm kính bình dương | thi công quán cafe trọn gói | chuyển nhà trọn gói Bình Dương | Tỏi Lý Sơn
Top