在Android開發(fā)中,拖動(dòng)條常常用于對(duì)系統(tǒng)某種數(shù)值的設(shè)置,例如播放視頻和音量等都會(huì)用到拖動(dòng)條SeekBar。SeekBar和進(jìn)度條十分相似,只是拖動(dòng)條可以通過滑動(dòng)塊的位置來標(biāo)志數(shù)值,并且允許用戶拖動(dòng)滑動(dòng)塊來改變值。此文章已經(jīng)同步到CSDN啦,歡迎訪問我的博客
1、SeekBar的常見的一些的屬性
- style="@android:style/Widget.SeekBar" 指定seekbar的樣式
- android:max="200" 指定seekbar的最大值為200,默認(rèn)是100
- android:progress="75"指定seekbar的當(dāng)前值為75
- android:thumb 設(shè)置seekbar的滑動(dòng)塊樣式
- android:progressDrawable 設(shè)置seekbar的進(jìn)度條的樣式
其中指定seekbar的當(dāng)前值,我們也可以通過代碼設(shè)置,如:seekBar.setProgress(75);
2、當(dāng)拖動(dòng)滑動(dòng)塊的位置的時(shí)候,為了監(jiān)聽SeekBar的拖動(dòng)情況,我們可以為它綁定一個(gè)onSeekBarChangeListener監(jiān)聽器
package per.lijuan.seekbardome;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private SeekBar seekBar;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.progress);
textView = (TextView) findViewById(R.id.text1);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 當(dāng)拖動(dòng)條的滑塊位置發(fā)生改變時(shí)觸發(fā)該方法,在這里直接使用參數(shù)progress,即當(dāng)前滑塊代表的進(jìn)度值
textView.setText("Value:" + Integer.toString(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.e("------------", "開始滑動(dòng)!");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.e("------------", "停止滑動(dòng)!");
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp">
<SeekBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/text1"
android:maxHeight="2dp"
android:minHeight="2dp"
android:paddingBottom="3dp"
android:paddingLeft="12dp"
android:max="200"
android:paddingRight="12dp"
android:paddingTop="3dp"
android:progressDrawable="@drawable/layer_progress"
android:thumb="@drawable/shape_circle" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="left"
android:padding="6dp"
android:text="Value:0"
android:textColor="#16BC5C"
android:textSize="16dp" />
</RelativeLayout>
seekbar的滑動(dòng)塊樣式 shape_circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- solid表示遠(yuǎn)的填充色 -->
<solid android:color="#16BC5C" />
<!-- stroke則代表遠(yuǎn)的邊框線 -->
<stroke
android:width="1dp"
android:color="#16BC5C" />
<!-- size控制高寬 -->
<size
android:height="20dp"
android:width="20dp" />
</shape>
設(shè)置seekbar的進(jìn)度條樣式 layer_progress.xml
<?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="3dp" />
<solid android:color="#ECF0F1" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="3dp" />
<solid android:color="#C6CACE" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="3dp" />
<solid android:color="#16BC5C" />
</shape>
</clip>
</item>
</layer-list>
好啦,我們看看效果圖唄:
這里寫圖片描述
3、除了自定義SeekBar的樣式,我們也可以使用系統(tǒng)提供的SeekBar樣式,例如:
(1)普通的
style="@android:style/Widget.SeekBar"
這里寫圖片描述
(2)DeviceDefault
style="@android:style/Widget.DeviceDefault.SeekBar"
這里寫圖片描述
(3)Holo
style="@android:style/Widget.Holo.SeekBar"
這里寫圖片描述
好了,本篇文章就這樣啦,存在總結(jié)不到位的地方還望指導(dǎo),感謝^_^