안드로이드 ProgressDialog 사용 예제
ProgressDialog는 User Thread 에서도 호출할 수 있으므로 Handler나 invalidate(), postInvalidate() 등을 사용할 필요가 없다.
개발자가 정의한 User Thread에서도 setProgress()를 호출해주면 진행바를 실행할 수 있다.
progressdialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onBtnStart"
android:text="시작" />
</LinearLayout>
package test.android.hello;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
public class ProgressDialogActivity extends Activity {
ProgressDialog progressDlg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onBtnStart(View v){
Log.i("버튼", "ProgressDialog테스트");
progressDlg = new ProgressDialog(this);
progressDlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//progressDlg.setIndeterminate(true);
progressDlg.setTitle("Loading....");
progressDlg.setCancelable(true);
progressDlg.setMax(100);
progressDlg.setProgress(0);
progressDlg.show();
new Thread(){
public void run() {
for(int i=0;i<=100;i++) {
progressDlg.setProgress(i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progressDlg.dismiss();
}
}.start();
}
}