상상하라 그리고 현실로 만들어라.

상상하는 모든 것이 미래다.

Kotlin과 Android/Android

코틀린으로 안드로이드 시크바(SeekBar) 한방에 끝내기!

월터제이(Walter J) 2020. 11. 5. 09:00

안녕하세요, 반갑습니다!

 

프로그래스바(ProgressBar) 와 비슷한 UI 가 하나 있습니다.

프로그래스바(ProgressBar)와 마친가지로 진행도를 나타내는 UI 인데요.

 

단순히 진행도만을 보여주는 프로그래스바(ProgressBar)와 달리 직접 조절까지 가능한 UI 입니다.

그래서 볼륨 조절, 화면 밝기 조절이 가장 대표적이지 않을까 싶습니다.

음악 및 동영상 플레이어에서 재생 시간을 조절하는 용도로도 정말 많이 볼 수 있습니다.

 

 

시크바(SeekBar) 한방에 끝내기!

 

 

볼륨 조절, 화면 밝기 등 모바일 앱에서는 정말 많이 쓰이는 기능 중 하나가 아닐까 합니다.

그래서 저도 화면 밝기를 조절할 수 있는 시크바(SeekBar) 를 만들어 보도록 하겠습니다.

 

간단합니다.

같이 한번 만들어 보시죠.

 

1. .xml 파일에 시크바(SeekBar) 배치하기

심플하게 시크바(SeekBar) 와 화면 밝기 상태만을 화면에 그렸습니다.

<레이아웃 이미지>

 

이때 시크바의 최대치를 지정할 수가 있는데요.

max = "100" 속성으로 조절할 수 있습니다.

화면 밝기니까 최대 100이면 되겠죠?

<SeekBar
    android:id="@+id/seek"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="31dp"
    android:max="100" />

 

이렇게 끝까지 올리게 되면 100이 됨을 확인할 수 있습니다.

 

 

2. 시크바(SeekBar) 에 Listener() 연결하기

이제 시크바를 진짜로 움직여서 조절을 해봐야겠습니다.

시크바(SeekBar) 는 setOnSeekBarChangeListener() 로 제어할 수 있습니다.

'setOn..' 까지만 입력하면 단 하나의 굵은 글씨가 나오기 때문에 헷갈릴 일도 없습니다.

seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
    override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
        //시크바 상태가 변경될 때 호출 됨
        Log.d("Main", "현재 값 : ${progress}")
        brightTxt.text = "${progress}"
        .
        .
        .
    }

    override fun onStartTrackingTouch(seekBar: SeekBar?) {
        //시크바를 터치할 때 호출 됨
        Log.d("Main", "시작!")
    }

    override fun onStopTrackingTouch(seekBar: SeekBar?) {
        //시크바에서 손을 뗄때 호출
        Log.d("Main", "끝!")
    }
})

 

완성! 끝났습니다!

이렇게 간단해도 될까 싶을 정도 입니다.

 

감사합니다.

반응형