Android/ProgressBar

Android ProgressBar example

Soul-Learner 2012. 8. 8. 17:46

Android에서 ProgressBar를 사용하는 예

Android에서는 2종류의 위젯을 제공한다 (ProgressBar, ProgressDialog)

버튼을 누르면 ProgressBar, ProgressDialog의 작동방식을 확인할 수 있다.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:indeterminate="false" android:max="100"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onBtnStart" android:text="START" /> </LinearLayout>


TestActivity.java

package com.example.androidapp; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.os.Bundle; import android.view.View; import android.widget.ProgressBar; public class TestActivity extends Activity { ProgressBar pbar; ProgressDialog pdlg; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); pbar = (ProgressBar) findViewById(R.id.progressBar1); } public void onBtnStart(View v) { new Thread() { public void run() { for(int i=1;i<=100;i+=2) { pbar.setProgress(i); // 위의 메소드는 어떤 쓰레드에서도 호출이 가능한 메소드이므로 아래는 불필요함 //pbar.postInvalidate(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); }  

/* 다이얼로그 상에서 ProgressBar를 사용하는 예 */ public void onProgressDlg(View v) { showDialog(1000); // onCreateDialog()가 자동으로 호출됨, 다이얼로그 출력, 아이디를 1000으로 정함 /* 3초후에 ProgressDialog 가 사라지도록 한다 */ new Thread() { public void run() { for(int i=1;i<=30;i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } pdlg.dismiss(); } }.start(); } public Dialog onCreateDialog(int id) { if(id==1000) { pdlg = new ProgressDialog(this); pdlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); pdlg.setMessage("작업을 진행하고 있습니다"); } return pdlg; }

}