본문 바로가기
안드로이드

[Android] SeekBar

by 코딩히어로 2022. 1. 17.
728x90

제목


안드로이드에서 값을 설정하는 여러 가지 방법 중에 사용자에게 숫자를 직접 입력하는

방식이 아니라 Bar형태로 드래그만 하면 되는 편리한 기능이 SeekBar입니다.

 

SeekBar는 값을 설정하는 아주 많은 분야에서 활용되고 있을 정도로 편리한 기능으로

기본적인 구조와 사용법만 알면 아주 간단하게 구현할 수 있습니다.

 

설명1

 

예를 들어 어떠한 센서의 민감도와 정확도를 숫자로 입력해야 하고 그 숫자의 범위가

1~10000이라고 한다면 직접 입력하는 게 버겁기도 하고 숫자의 범위가 어느 정도인지도

잘 가늠이 가지 않는데 SeekBar를 이용하면 손가락으로 드래그만 하면 되기 때문에

직관적이면서도 너무 편리합니다.

 

Xml Layout에 SeekBar를 선언하는 것으로 사용에 대한 정의가 시작됩니다.

 

<SeekBar
android:id="@+id/seek1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4"></SeekBar>

 

먼저 사용할 위치에 SeekBar를 작성한 뒤에 JAVA에서 호출할 id를 입력합니다.

 

private SeekBar seek1;

 

다음으로 SeekBar를 호출할 해당 Activity에서 SeekBar를 선언합니다.

다음으로는 선언한 SeekBar와 xml에 선언된 seek1을 연결해줍니다.

 

seek1 = (SeekBar) findViewById(R.id.seek1);

 

여기까지 연결되었으면 이제 seek1의 범위를 정해줍니다.

이 값은 드래그 시 왼쪽 끝단과 오른쪽 끝단의 값으로 범위 값입니다.

 

seek1.setMin(1);
seek1.setMax(10000);

 

범위는 처음 말했던 것처럼 1 ~ 10000까지 설정해주었습니다.

이렇게 SeekBar의 왼쪽 끝단은 1, 오른쪽 끝단은 10000으로 설정되었습니다.

 

이제 손가락을 이용해서 드래그를 해보면 손가락 위치에 따라서 값이 변하는 것을 볼 수 있습니다.

그런데 위와 같이 구현하면 지금 현재 값이 몇인지는 나오지 않습니다.

 

이 값을 TextView를 통해 출력하는 프로그램을 작성해보겠습니다.

 

TextView seek1_val;

seek1_val = (TextView) findViewById(R.id.seek1_txt);

 

먼저 SeekBar의 값을 출력할 TextView를 선언하고 xml코드와 연결해줍니다.

 

seek1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        seek1_val.setText(String.valueOf(progress));
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        seek1_val.setText(String.valueOf(seekBar.getProgress()));
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        seek1_val.setText(String.valueOf(seekBar.getProgress()));
    }
});

 

seek1의 setOnseekBarChangeListener를 이용하여 사용자가 드래그하는 순간에

이벤트를 발생시켜 seek1_val의 TextView에 출력해줍니다.

 

설명2

 

이렇게 SeekBar의 위치에 따라서 그 값이 얼마인지 출력할 수 있습니다.

728x90
반응형

댓글