SeekBar 粗略小节

滑片控件,图像主要由4个部分组成 background、progessDrawable、secondProgressDrawable以及thumb
基本属性在.xml文件中可以定义
<SeekBar android:id="@+id/seek"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="75" />


在.java中 可以通过通过以下函数进行需要的操作
 mSeekBar = (SeekBar)findViewById(R.id.seek);
 mSeekBar.setOnSeekBarChangeListener(this);
 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {      //当thumb移动时
    }

    public void onStartTrackingTouch(SeekBar seekBar) {                                 //当thumb刚开始移动
    }

    public void onStopTrackingTouch(SeekBar seekBar) {	                                //当thumb结束移动
        mTrackingText.setText(getString(R.string.seekbar_tracking_off));
    }


当自定义图片文件时可以通过.xml文件进行设置
 android:thumb="@drawable/thumb"
 android:progressDrawable="@drawable/progress"


在@drawable/thumb.xml中,设置thumb在不同状态下加载的图片或是不同状态唯一图片,则不需写新建thumb.xml直接加载图片即可

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:drawable="@drawable/thumb_pressed"/>
    <item
        android:state_focused="false"
        android:state_pressed="false"
        android:drawable="@drawable/thumb_normal"/>
</selector>

在@drawable/progressDrawable.xml中,设置background以及progress图像

 <?xml version="1.0" encoding="utf-8"?>

 <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="#ff9d9e9d"
                      android:centerColor="#ff5a5d5a"
                      android:centerY="0.75"
                     android:endColor="#ff747674"
                    android:angle="270"
            />
        </shape>
      </item>
     
       <item android:id="@android:id/secondaryProgress">
        <clip>
             <shape>
                <corners android:radius="5dip" />
                <gradient
                       android:startColor="#80ffd300"
                        android:centerColor="#80ffb600"
                         android:centerY="0.75"
                         android:endColor="#a0ffcb00"
                         android:angle="270"
                 />
             </shape>
         </clip>
     </item>
   
    <item android:id="@android:id/progress">
         <clip>
             <shape>
                <corners android:radius="5dip" />
                <gradient
                         android:startColor="#ffffd300"
                        android:centerColor="#ffffb600"
                        android:centerY="0.75"
                        android:endColor="#ffffcb00"
                       android:angle="270"
                />
             </shape>
       </clip>
    </item>
 
 </layer-list>

android:drawable="@drawable/progress_mediumbacon" 也可以通过简单加载图片的方式

过程中有一些小的问题:
1.加载.9文件   <nine-patch android:src="@drawable/progress"/>
2.自定子图像时,调整progress的高度时 thumb无法中心对齐,高度通过设置最大最小高度来调整
<SeekBar android:maxHeight = "5dip"
	android:minHight="5dip"

3.加载thumb图片过大,在移动到最左端或是最右端时,可能出现被切效果,需要通过设置thumbOffset来调节

<SeekBar android:thumbOffset ="7dip"

你可能感兴趣的:(android,seekbar,thumb)