프로그레스바는 어떤 일의 진행 상태를 중간 중간 보여주기 위해 사용된다.
대표적으론 작업의 진행 정도를 보여주는 막대 모양과, 작업이 진행 중임을 보여주는 원 모양이 있다.
다음은 XML 레이아웃에서 < Progress > 태그를 사용해 막대 모양의 프로그레스바를 추가한 코드이다.
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="30" />
max 속성은 값의 최대 범위를 지정할 수 있으며,
progress 속성은 현재 값을 지정할 수 있다.
다음은 메인 액티비티의 코드이다.
ProgressBar progressBar = findViewById(R.id.progressBar);
progressBar.setIndeterminate(false);
progressBar.setProgress(80);
progressBar.incrementProgressBy(10);
setIndeterminate(false)는 진행 중인 작업상태를 보여주고
setIndeterminate(true)는 진행상태를 무한하게 표시한다.
setProgress 메소드는 현재 값을 설정한다.
incrementProgressBy 메소드는 현재 설정되있는 값을 기준으로 값을 더하거나 뺄 때 사용된다.
현재 값을 80으로 더하는 값을 10으로 했으므로 progressBar의 값은 90이 된다
다음은 원 모양의 프로그레스 바를 보여주는 코드이다.
public class MainActivity extends AppCompatActivity {
ProgressDialog dialog;
@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) {
dialog = new ProgressDialog(MainActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("데이터를 확인하는 중입니다.");
dialog.show();
}
});
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(dialog != null){
dialog.dismiss();
}
}
});
}
}
버튼 두 개를 레이아웃에 만들고 버튼을 누르면 ProgressDialog 대화상자를 만들고,
다른 버튼을 누르면 대화상자를 없애도록 하였다.
멈추지 않는 프로그레스바를 대화상자 안에서 보여주기 위해
ProgressDialog 객체를 하나 만들고
dialog = new ProgressDialog(MainActivity.this);
그 스타일을 setProgressStyle(ProgressDialog.STYLE_SPINNER);로 하였다.
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
show 메소드를 호출하여 ProgressDialog를 화면에 보여준다.
dialog.show();
어떤 이벤트가 발생했을 때 대화상자를 보이지 않게 하고 싶다면 dismiss 메소드를 호출하면 된다.
if(dialog != null)
dialog.dismiss();