< 계속 업데이트 합니다. 질문 환영 >
10-06-16 초기 문서, style 설정 등 작성
- Seekbar


Progress바와 유사하나, thumb를 옮겨 사용자가 원하는 위치로 이동하는 것이 가능하다.

1) 만드는 법
   -
2) Seekbar 변경에 반응하기

3) style 바꾸는 법
   - thumb 바꾸는 법
     thumb를 바꾸는 법은 쉽다. 함수를 사용할 경우,
     drawable.setBounds(new Rect(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()));
     mSeekbar.setThumb(drawable);
     layout을 사용할 경우 아래 속성을 Seekbar 태그에 포함시킨다.
     android:thumb="@drawable/pb_slider_thumb1"
   - thumb 없애기
     mSeekbar.setThumb(null);
     layout을 사용해서는 어떻게 해야 하는지 모르겠다.
     ( thumb을 통해서 없애는 방법을 쓰느니 progressbar를 쓰는게 낫다.
     아이스크림 샌드위치에서는 crash가 발생한다. 버그인듯; ) 

   - background, foregound 바꾸는 법
     xml로 이루어진 drawable을 추가한다.
     (이 때, 이미지들이 9patch가 안되어 있다면 동일한 이미지가 반복적으로 나타난다.)
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@android:id/background"
              android:drawable="@drawable/pb_slider_normal" />
        <item android:id="@android:id/secondaryProgress">
              <clip android:drawable="@drawable/pb_slider_normal"/>
        </item>
        <item android:id="@android:id/progress">
              <clip android:drawable="@drawable/pb_slider_highlight"/>
        </item>
</layer-list>
      seekbar 레이아웃에 이 xml 파일을 설정한다.
<SeekBar android:id="@+id/seek"
         android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="75" android:thumb="@drawable/pb_slider_thumb1"
        android:progressDrawable="@drawable/seekbar_drawable"/>


4) seekbar에 대한 이벤트 감지
        mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                mplayer.seekTo(progress);
            }
       });

5) seekbar 위치 변경
       position / maxvalue 의 위치로 설정
       sk.setMax(maxvalue);
       sk.setProgress(position);

참고
source에서 id로 Drawable 만드는 법
Drawable d = getResources().getDrawable(drawable id)

참고 자료
http://blog.naver.com/ween8/50082179209
http://www.codeweblog.com/android-modify-seekbar-style/
http://www.helloandroid.com/tutorials/musicdroid-audio-player-part-i


  1. Mastre 2011.02.14 15:11 신고

    안녕하세요. 저도 Seek 을 가지고 개발 중인데 두개의 Thumb을 이용하는 방법이 있을까요?

    여러가지 해보는데 안되서요 ..

    • 소혼 2011.02.16 22:53 신고

      그냥은 안될것 같네요. AbsSeekBar 를 상속받거나 해야 할 것 같네요.

  2. Hyo 2011.05.27 10:02 신고

    안녕하세요.. 시크바에서 사용하는 progress 이미지 좀 주시면 안될까요??

  3. 자몽레드 2017.03.02 15:51 신고

    안드로이드 seekbar를 프로그래스바처럼 만들고 있었는데 progress의 코너도 둥글게 하면 막 밖으로 삐져나가고 난리도 아니더라구요.. 그래서 mask를 써야하나 tint를 퍼센티지로 줘야하나 되게 고민하고 있었는데 검색 마구 하다가 우연히 여기서 본 clip 속성 주니까 안삐져나가고 잘 되더라구요!!! 별 일 아닐수도 있는데 정말 감사드립니다 ㅠㅠㅠ

+ Recent posts

티스토리 툴바