Android - 프로그레스 바

유의선·2023년 4월 17일
0
post-thumbnail

프로그레스바는 어떤 일의 진행 상태를 중간 중간 보여주기 위해 사용된다.

대표적으론 작업의 진행 정도를 보여주는 막대 모양과, 작업이 진행 중임을 보여주는 원 모양이 있다.

다음은 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();

0개의 댓글