<안드로이드>개발/안드로이드/App

[Widget 스터디] Seekbar

소혼 2010. 6. 16. 23:45
반응형
< 계속 업데이트 합니다. 질문 환영 >
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


반응형