본문 바로가기
안드로이드/Widget

안드로이드 SeekBar

by 김어찐 2022. 6. 2.
728x90

ProgressBar와 매우 유사하지만 사용자가 값을 직접 지정할 수 있는 기능을 갖추고 있다.

 

주요 속성

style : SeekBar의 모양을 설정한다.
max : 최대 값
progress : 현재 값

 

주요 프로퍼티

progress : 현재 값을 관리한다.

 

주요 메서드

incrementProgressBy : 지정한 값 만큼 증가 혹은 감소시킨다.

 

주요 이벤트

SeekBarChange : SeekBar의 상태가 변경되었을 때

 

package com.example.seekbar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.SeekBar
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            textView.text = "SeekBar 1 ${seekBar.progress}"
            textView2.text = "SeekBar 2 ${seekBar2.progress}"
        }

        button2.setOnClickListener {
            seekBar.progress=3
            seekBar2.progress=8
        }

        button3.setOnClickListener {
            seekBar.incrementProgressBy(1)
            seekBar2.incrementProgressBy(1)
        }

        button4.setOnClickListener {
            seekBar.incrementProgressBy(-1)
            seekBar2.incrementProgressBy(-1)
        }

        seekBar.setOnSeekBarChangeListener(listener1)
        seekBar2.setOnSeekBarChangeListener(listener1)
    }

    val listener1 =object : SeekBar.OnSeekBarChangeListener{
        // Progressbar의 값이 변경
        override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
            when (seekBar?.id) {
                R.id.seekBar -> {
                    textView.text = "첫 번째 SeekBar가 ${progress}로 설정되었습니다\n"
                }
                R.id.seekBar2 -> {
                    textView.text = "두 번째 SeekBar가 ${progress}로 설정되었습니다\n"
                }
            }
            if (fromUser == true) {
                textView.append("사용자에 의해 설정되었습니다")
            } else {
                textView.append("코드에 의해 의해 설정되었습니다")
            }
        }

        // 사용자가 터치 했을 때
        override fun onStartTrackingTouch(seekBar: SeekBar?) {
            when (seekBar?.id) {
                R.id.seekBar -> {
                    textView2.text = "첫 번째 SeekBar 사용자 터치 시작"
                }
                R.id.seekBar2 -> {
                    textView2.text = "두 번째 SeekBar 사용자 터치 시작"
                }
            }
        }

        // 사용자가 터치를 끝냈을 때
        override fun onStopTrackingTouch(seekBar: SeekBar?) {
            when (seekBar?.id) {
                R.id.seekBar -> {
                    textView2.text = "첫 번째 SeekBar 사용자 터치 종료"
                }
                R.id.seekBar2 -> {
                    textView2.text = "두 번째 SeekBar 사용자 터치 종료"
                }
            }
        }
    }
}

 

 

 

728x90

'안드로이드 > Widget' 카테고리의 다른 글

안드로이드 ScrollView  (0) 2022.06.02
안드로이드 RatingBar  (0) 2022.06.02
안드로이드 ProgressBar  (0) 2022.06.02
안드로이드 Chip  (0) 2022.05.31
안드로이드 CheckedTextView  (0) 2022.05.31