API Demos 2.3 學習筆記 (13)-- Views->Seek Bar
更多精彩內容,請點擊閱讀:《API Demos 2.3 學習筆記》
SeekBar 控件最經典的應用是在播放器中用於顯示/改變播放進度的進度條。下麵是一個簡單的SeekBar 控件:
<SeekBar android:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />注:android:max="100" 屬性表示該SeekBar 的最大值為100,即取值範圍為0~100android:progress="50" 屬性表示當前初始的進度值為50
android:secondaryProgress="75" 屬性表示當前初始的第二進度值為 75
在播放器的進度條中, android:progress常用來表示當前播放的進度,而 android:secondaryProgress則常用來表示當前音頻/視頻文件緩衝的進度。
SeekBar 主要通過設置監聽器OnSeekBarChangeListener來響應用戶點擊的。具體使用方法如下:
// 通過findViewById方法獲得RatingBar對象
SeekBar mSeekBar = (SeekBar) findViewById(R.id.seekbar);
//創建SeekBar 監聽器
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO 用戶停止對seekbar進行觸屏操作時觸發響應
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO 用戶開始對seekbar進行觸屏操作時觸發響應
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO 用戶移動滑動條,導致進度值改變時,觸發響應
}
});注:創建 SeekBar 監聽器時,需要注意的是,3個參數以及它們對應的含義如下:seekBar: 由於多個SeekBar可以同時指定同一個SeekBar 監聽器 。該參數就是當前觸發SeekBar 監聽器的那一個SeekBar 對象。
progress: 當前進度值。取值範圍從0到android:max屬性所設定的最大值。
fromUser: 如果觸發監聽器的是來自用戶觸屏點擊或軌跡球左右移動,則為true。
下麵我們進行實例代碼解析:
res-layout-seekbar_1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:andro
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 一個SeekBar對象-->
<!-- android:max="100" 表示seekbar最大值是100,即取值範圍0~100-->
<!-- android:progress="50" 表示seekbar當前進度取值是50-->
<!-- android:secondaryProgress="75" 表示seekbar當前第二進度取值是75-->
<SeekBar android:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />
<!-- 一個TextView對象,用於顯示當前的progress進度值 -->
<TextView android:
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- 一個TextView對象,用於顯示用戶當前是否在對Seek Bar進行觸屏操作 -->
<TextView android:
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
src-com.example.android.apis.view-SeekBar1.java
package com.example.android.apis.view;
import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.TextView;
import com.example.android.apis.R;
/**
* 演示如何使用seek bar
*/
public class SeekBar1 extends Activity implements SeekBar.OnSeekBarChangeListener {
SeekBar mSeekBar;
TextView mProgressText;
TextView mTrackingText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seekbar_1);
// 通過findViewById方法獲得一個SeekBar對象和兩個用於提示作用的TextView
mSeekBar = (SeekBar)findViewById(R.id.seek);
mSeekBar.setOnSeekBarChangeListener(this); //設置Seek Bar監聽器
mProgressText = (TextView)findViewById(R.id.progress);
mTrackingText = (TextView)findViewById(R.id.tracking);
}
//當用戶用手移動滑動條,改變進度值時,觸發該響應。progress表示當前進度值。
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
mProgressText.setText(progress + " " +
getString(R.string.seekbar_from_touch) + "=" + fromTouch);
}
//用戶開始對SeekBar進行觸屏操作時觸發響應
public void onStartTrackingTouch(SeekBar seekBar) {
mTrackingText.setText(getString(R.string.seekbar_tracking_on));
}
//用戶停止對SeekBar進行觸屏操作時觸發響應
public void onStopTrackingTouch(SeekBar seekBar) {
mTrackingText.setText(getString(R.string.seekbar_tracking_off));
}
}
知識點1:關於如何自定義SeekBar的顏色,大小,圖片等進階知識,請點擊閱讀《SeekBar自定義(顏色,大小,圖片)》
預覽效果:

最後更新:2017-04-02 06:51:56