SeekBar 상태 변경하기
[상황]
Seekbar의 상태를 변경해 주고 싶다면, setProgress()함수를 이용합니다.
사용예는 아래와 같습니다.
[방법]
setProgress() 함수 1는 오버로딩되어있기 때문에, 필요에 따라 2가지로 구분하여 사용 가능합니다.
1. 애니메이션 필요 없는 경우에 사용합니다(해당 지점으로 바로 순간 ! 이동)
seekBar.setProgress 2(seekBar_R.getProgress()+1);
//seekBar.setProgress(원하는 위치 값);
getProgress()를 추가적으로 이용해 [+]버튼을 누를 때 현재 값에서 시작해 1씩 증가하도록 구현한 것입니다.
(위의 코드 라인을 [+]버튼의 클릭 이벤트 리스너 안에 넣어줌)
2. 애니메이션 필요한 경우에 사용합니다(해당 지점으로 움직이는 효과도 함께 제공)
seekBar.setProgress 3(seekBar_R.getProgress()+20, true);
// 두번째 인자로 true값을 주면 애니메이션 효과를 제공합니다.
[정리]
-끝.
[추가 Study]
1. setProgress() 함수
public void setProgress(int progress) {
setProgressInternal(progress, false, false);
}
위 함수는 Visual Position을 바로 이동시킨다.
Animation 효과가 필요하면 아래 함수를 사용해야 한다.
public void setProgress(int progress, boolean animate) {
setProgressInternal(progress, false, animate);
}
내부에서 setProgressInternal()함수를 호출한다.
2. setProgressInternal() 함수
refreshProgress()함수를 내부 호출하고 있기 때문에, 위의 방법으로 간편하게 끝날 수 있는 것.
synchronized boolean setProgressInternal(int progress, boolean fromUser, boolean animate) {
if (mIndeterminate) {
// Not applicable.
return false;
}
progress =
MathUtils.constrain(progress, 0, mMax);
if (progress
== mProgress) {
// No change from current.
return false;
}
mProgress = progress;
refreshProgress(R.id.progress, mProgress, fromUser, animate);
return true;
}
- seekbar의 progress값이 현재 Max가 아닌 경우에만 시행한다.
- 앱 유저가 seekbar를 건드리지 않았지만 seekbar를 변경해야 하는 경우에만 Progress 상태를 refresh한다.
'ㆍ Android Coding' 카테고리의 다른 글
[안드로이드 스튜디오/Error] camera.open() fail to connect to camera service (1) | 2016.10.12 |
---|---|
[안드로이드 코딩/전체화면] FullScreen, Hide Navigation without ERROR (1) | 2016.09.23 |
[안드로이드 코딩/Switch] Switch 상태(state) 바꾸기 (0) | 2016.09.22 |
[안드로이드 스튜디오/Error] Error occurred during initialization of VM: 해결 (4) | 2016.09.22 |
[안드로이드 코딩/Button]투명 버튼 클릭효과 넣기 (0) | 2016.09.20 |