SeekBar 是 ProgressBar 的扩展,在其基础上增加了一个可滑动的滑片(注:就是那个可拖动的图标). 用户可以触摸滑片并向左或向右拖动,再或者可以使用方向键都可以设置当前的进度等级. 不建议把可以获取焦点的小部件放在SeekBar的左边或右边。在xml布局中通过设置“android:thumb”来为进度条指定一个外观
另外,SeekBar 可以通过 SeekBar.OnSeekBarChangeListener 以获得用户操作的通知
运行效果:
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<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"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text1"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text2"
/>
</LinearLayout>
my_thumb文件:
<?xml version="1.0" encoding="utf-8"?>
<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"/>
</seletor>
资源图片:
MainActivity:
package com.example.seekbartest;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity implements OnSeekBarChangeListener{
private SeekBar bar;
private TextView textView1;
private TextView textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = (SeekBar)findViewById(R.id.seekBar);
bar.setOnSeekBarChangeListener(this);
textView1 = (TextView)findViewById(R.id.text1);
textView2 = (TextView)findViewById(R.id.text2);
}
/**
* 进度改变是会调用此方法
*/
@Override
public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
textView1.setText("正在拖动");
textView2.setText("当前数值:" + progress);
}
/**
* 开始拖动时会调用此方法
*/
@Override
public void onStartTrackingTouch(SeekBar arg0) {
textView1.setText("开始拖动");
}
/**
* 停止拖动时会调用此方法
*/
@Override
public void onStopTrackingTouch(SeekBar arg0) {
textView1.setText("停止拖动");
}
}