웹사이트 검색

Android ProgressBar 예


Android ProgressBar 예제에 오신 것을 환영합니다. 오늘 우리는 애플리케이션에서 Android ProgressBar를 구현할 것입니다. 진행률 표시줄에는 수평 및 원형의 두 가지 유형이 있습니다. Android 애플리케이션에서 이 두 가지 진행률 표시줄을 모두 만들 것입니다.

Android 진행률 표시줄

Android ProgressBar는 일부 진행 상황을 보여주는 그래픽 보기 표시기입니다. Android 진행률 표시줄은 작업 완료를 나타내는 막대를 표시합니다. Android의 진행률 표시줄은 사용자에게 작업을 완료할 시간을 알려주기 때문에 유용합니다. ProgressBar를 사용하는 것은 지정된 작업(예: 이미지 다운로드)의 진행 상태를 사용자에게 표시하므로 좋은 사용자 경험을 제공합니다.

Android ProgressBar 속성

ProgressBar를 설명하는 데 사용되는 몇 가지 중요한 특성은 다음과 같습니다.

  1. android:max : 이 속성을 사용하여 ProgressBar의 최대값을 설정할 수 있습니다. 기본적으로 진행률 표시줄 최대값은 100입니다.
  2. android:indeterminate : 시간이 확정되었는지 여부에 따라 부울 값이 설정됩니다. 이 속성을 false로 설정하면 실제 진행 상황이 표시됩니다. true로 설정되어 있으면 진행 상황을 보여주기 위해 순환 애니메이션이 표시됩니다.
  3. android:minHeight : ProgressBar의 높이를 설정하는 데 사용됩니다.
  4. android:minWidth : ProgressBar의 너비를 설정하는 데 사용됩니다.
  5. android:progress : 진행률 표시줄 값이 증가할 숫자를 설정하는 데 사용됩니다.
  6. style : 기본적으로 진행률 표시줄은 물레 모양으로 표시됩니다. 가로 막대로 표시하려면 속성을 style="?android:attr/progressBarStyleHorizontal”로 설정해야 합니다.

이 자습서에서는 ProgressBar를 만들고 스레드 내부에서 업데이트하여 값을 증가시킵니다. 진행 상황을 천천히 표시하기 위해 값을 증가시킨 후 스레드를 200밀리초 동안 휴면 상태로 만듭니다.

Android 진행률 표시줄 예제 프로젝트 구조

Android 진행률 바코드

activity_main.xml에는 부모 보기로 RelativeLayout이 포함되어 있으며, 여기에는 진행 상황을 숫자로 표시하기 위한 TextView와 함께 가로 ProgressBar 및 원형이 포함되어 있습니다. activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="23dp"
        android:layout_marginTop="20dp"
        android:indeterminate="false"
        android:max="100"
        android:minHeight="50dp"
        android:minWidth="200dp"
        android:progress="1" />

    <ProgressBar
        android:id="@+id/progressBar_cyclic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="50dp"
        android:minWidth="50dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/progressBar"
        android:layout_below="@+id/progressBar"/>

</RelativeLayout>

위 레이아웃에서 수평 진행률 표시줄 값은 android:progress에 설정된 대로 하나씩 업데이트됩니다. 활동이 중지되지 않는 한 원형 진행률 표시줄이 계속 실행됩니다.

package com.journaldev.progressbar;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private ProgressBar progressBar;
    private int progressStatus = 0;
    private TextView textView;
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        textView = (TextView) findViewById(R.id.textView);
        // Start long running operation in a background thread
        new Thread(new Runnable() {
            public void run() {
                while (progressStatus < 100) {
                    progressStatus += 1;
                    // Update the progress bar and display the
                    //current value in the text view
                    handler.post(new Runnable() {
                        public void run() {
                            progressBar.setProgress(progressStatus);
                            textView.setText(progressStatus+"/"+progressBar.getMax());
                        }
                    });
                    try {
                        // Sleep for 200 milliseconds.
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}

Android ProgressBar 프로젝트 다운로드

참조: developer.android.com 문서