android學習SeekBar的使用


  

SeekBar介紹
聽歌的時候,我們常常想快進或者快退到某一時間段,聽歌的時候我們控制音量大小聽歌,SeekBar可以通過滑塊的位置來標示數值,
而且拖動條允許用戶拖動滑塊來改變進度條的大小

SeekBar的主要屬性和方法
(1)setMax --- 設置SeekBar的最大數值
(2)setProgress --- 設置SeekBar的當前數值
(3)setSecondProgress---設置SeekBar的第二數值

即當前拖動條的推薦位置
SeekBar的事件
由於拖動條可以誒用戶控制。所以需要對其事件監聽,這就需要實現SeekBar.OnSeekBarChangeListner接口,此接口共需監聽
三個事件分別是:
數值改變----onProgressChanged
開始拖動----onStartTrackingTouch
停止拖動----onStopTrackingTouch

1,布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar"
        android:max="100"
        android:progress="50"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView2" />
</LinearLayout>

  2,MainActivity

public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener{

    private SeekBar seekBar;
    private TextView tv1;
    private TextView tv2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        seekBar = (SeekBar)findViewById(R.id.seekBar);
        seekBar.setOnSeekBarChangeListener(this);
        tv1 = (TextView)findViewById(R.id.textView);
        tv2 = (TextView)findViewById(R.id.textView2);

    }
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        tv2.setText(progress+"");
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        tv1.setText("開始拖動");
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        tv1.setText("停止拖動");
    }
}
自定義SeekBar的進度條
改變進度條的樣式
android:ProgressDrawable = “@drawable/seekBar_img”
改變滑塊的樣式
android:thumb = @drawable/thumb
  3,改變滑塊的樣式
  和ProgressBar 一樣,我們需要進入SeekBar 的樣式文件看一看
 <style name="Widget.SeekBar">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:minHeight">20dip</item>
        <item name="android:maxHeight">20dip</item>
        <item name="android:thumb">@android:drawable/seek_thumb</item>
        <item name="android:thumbOffset">8dip</item>
        <item name="android:focusable">true</item>
        <item name="android:mirrorForRtl">true</item>
    </style>

    我們可以看到他的滑塊是這個樣式@android:drawable/seek_thumb,繼續我們可以在\data\res\drawable下找到seek_thumb.xml這個文件,他就是滑塊的樣式

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_pressed" />

    <item android:state_focused="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:state_selected="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:drawable="@drawable/seek_thumb_normal" />

</selector>

  可以看到他是一個選擇器,這樣,我們想要改變滑塊的樣式,只需要修改這個選擇器即可。

  在drawable下放置兩種滑塊圖片

  my_thumb.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/select" android:state_pressed="true" android:state_window_focused="true"/>
    <item android:drawable="@drawable/select" android:state_focused="true" android:state_window_focused="true"/>
    <item android:drawable="@drawable/select" android:state_selected="true" android:state_window_focused="true"/>
    <item android:drawable="@drawable/normal"/>

</selector>

  更改SeekBar的thumb屬性

 <SeekBar
        android:thumb="@drawable/my_thumb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar"
        android:max="100"
        android:progress="50"/>
就可以看到我們想要的滑塊效果了。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM