SeekBar, 시크바
- 볼륨 조절, 동영상 재생에 대표적 사용
- ProgressBar '프로그래스바' 확장 View.
- ProgressBar 속성 상속.
이벤트 처리, OnSeekBarChangeListener '상태 변경시 자동 호출, CallBack'
onStartTrackingTouch(SeekBar seekbar) : 최초 탭하여 드래그 시작시 발생
onStopTrackingTouch(SeekBar seekbar) : 드래그 중 발생
onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) : 드래그 멈추면 발생
-> 시크바 View / 변경된 값 / 사용자에 의한 변경인지(True), 코드에 의한 변경인지(False)
// OnSeekBarChange 리스너 - Seekbar 값 변경시 이벤트처리 Listener
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// onProgressChange - Seekbar 값 변경될때마다 호출
Log.d(TAG, String.format("onProgressChanged 값 변경 중 : progress [%d] fromUser [%b]", progress, fromUser));
seekbar_value.setText(String.valueOf(seekBar.getProgress()));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// onStartTeackingTouch - SeekBar 값 변경위해 첫 눌림에 호출
Log.d(TAG, String.format("onStartTrackingTouch 값 변경 시작 : progress [%d]", seekBar.getProgress()));
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// onStopTrackingTouch - SeekBar 값 변경 끝나고 드래그 떼면 호출
Log.d(TAG, String.format("onStopTrackingTouch 값 변경 종료: progress [%d]", seekBar.getProgress()));
}
});
SeekBar Handle 사용자 드래그 조작, CallBack 순서
Code 조작
- SeekBar.setProgress(int progress) : 지정 progress 값으로 설정
- SeekBar.incrementProgressBy(int difference) : 현재 progress값 기준으로 더하기 / 빼기 설정
@Override
public void onClick(View view) {
// EditText 입력한 값 가져오기
int value = Integer.parseInt(seekbar_input.getText().toString());
switch (view.getId()) {
case R.id.seekbar_progress:
// 입력 값 검사, 양수(0이상) && (Max)최대범위 이내
if (value >= 0 && value <= seekBar.getMax()){
seekBar.setProgress(value);
} else {
Toast.makeText(this, "입력 범위 오류", Toast.LENGTH_SHORT).show();
}
break;
case R.id.seekbar_increment:
//현재 Progress 값 기준으로 더하기 빼기.
seekBar.incrementProgressBy(value);
break;
}
}
Code 조작, setProgress(int progress) / incrementProgressBy(int diff)
- boolean fromUser, 사용자의 Handle 조작에 의한 변경인지 'Handle 미조작으로 False 반환'
- onProgressChanged 콜백만 발생 (onStartTrackingTouch / onStopTrackingTouch 발생 x)