Seekbar 사용자 정의 스타일 및 사용

seekbar 사용
    "@+id/seekBar"
        style="@style/Widget.AppCompat.SeekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxHeight="32dp"
        android:minHeight="32dp"
        android:paddingTop="16dp"
        android:paddingBottom="16dp"
        android:max="100"
        android:progress="80"  
        android:scaleType="center" />

스타일 속성 설정 seekbar의 스타일 minHeight 속성 설정 seekbar의 높이paddingTop,paddingBottom은 seekbar의 터치 영역을 넓힐 수 있습니다 seekbar의layoutHeight 속성이 wrap으로 설정되지 않은 경우콘텐츠, 그러면thumb에 표시되지 않습니다
진도표의 스타일을 설정하려면 속성을 추가해야 합니다 android:progressDrawable="@drawable/seekbarStyle"에서 seekbarstyle.xml은 다음과 같이 쓸 수 있습니다: 법1:
               
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">     
           
        <item android:id="@android:id/background">     
            <shape>     
                <corners android:radius="5dip" />     
                <gradient     
                        android:startColor="#ffffffff"    
                        android:centerColor="#fffffff0"    
                        android:centerY="0.75"    
                        android:endColor="#fffffafa"    
                        android:angle="270"    
                />     
            shape>     
        item>     
             
        <item android:id="@android:id/secondaryProgress">     
            <clip>     
                <shape>     
                    <corners android:radius="5dip" />     
                    <gradient     
                            android:startColor="#8000cdcd"    
                            android:centerColor="#8000bfff"    
                            android:centerY="0.75"    
                            android:endColor="#a000b2ee"    
                            android:angle="270"    
                    />     
                shape>     
            clip>     
        item>     
             
        <item android:id="@android:id/progress">     
            <clip>     
                <shape>     
                    <corners android:radius="5dip" />     
                    <gradient     
                            android:startColor="#ff00ffff"    
                            android:centerColor="#ff00ced1"    
                            android:centerY="0.75"    
                            android:endColor="#ff00f5ff"    
                            android:angle="270"    
                    />     
                shape>     
            clip>     
        item>     

법2:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/sv_volume_seekbar_gray" />
    
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/sv_volume_seekbar_blue_small" />
    item>
layer-list>

주의: 첫 번째 진도표에 clip 라벨을 사용하면 그림을 펼칠 수 있으며, clip 라벨을 사용하지 않는 배경에서는 그림을 연결합니다.
슬라이더 스타일을 설정하려면 속성android:thumb=@drawable/thumb를 추가해야 합니다.xml은 다음과 같이 작성할 수 있습니다.
      
    <selector xmlns:android="http://schemas.android.com/apk/res/android">  
          
          
        <item android:drawable="@drawable/menu_bg" android:state_pressed="true"/>  
          
        <item android:drawable="@drawable/menu_bg" android:state_focused="false" android:state_pressed="false"/>    
    selector>  

thumb를 제거하고 클릭한 물결 효과를 남기지 않으려면 다음과 같은 속성을 설정합니다.
android:thumb="@null"
android:background="@null"

이벤트 모니터 setOn SeekBarChange Listener를 설정하여seekBar의 현재 상태를 가져옵니다. 보통 다음 세 가지 이벤트를 감청합니다.
  • public voidonProgressChanged(SeekBar seekBae,int progress,boolean fromUser); SeekBar 진행률 값 변경 내용 수신
  • public voidonStartTrackingTouch(SeekBar seekBar);SeekBar 수신 드래그 시작
  • public voidonStopTrackingTouch(SeekBar seekBar);SeekBar의 드래그 중지 수신
  • seekbar 조절 범위를 -6에서 +6으로 설정하면 다음과 같은 속성을 설정할 수 있습니다android:max="12"그리고 리셋에서 값을 6으로 줄이면 됩니다. 아래와 같습니다.
                @Override
                public void onProgressChanged(SeekBar seekBar, final int progress, boolean fromUser) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            value.setText("" + (progress - 6));
                        }
                    });
                }

    좋은 웹페이지 즐겨찾기