转载自http://www.cnblogs.com/plokmju/p/android_ProgressBar.html,有改动
SeekBar是滑动条控件,间接继承自ProgressBar,也可以使用ProgressBar的属性设置。新增了属性android:thumb用以自定义滑块
当用户按住滑块进行滑动的时候,会触发一个SeekBar.OnSeekBarChangeListener事件,这是一个接口,需要开发人员实现三个方法:
onProgressChanged(SeekBar seekBar,int progress,boolean fromUser):
滑块在移动的时候响应。
seekBar为触发事件的SeekBar控件,
progress为当前SeekBar的滑块数值,
fromUser为是否用户拖动产生的响应。
onStartTrackingTouch(SeekBar seekBar):滑块开始移动的时候响应。
onStopTrackingTouch(SeekBar seekBar):滑块结束移动的时候相应。
Demo:
activity_main.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- 用于显示滑动状态 -->
<TextView
android:id="@+id/textview_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
/>
<!-- 用于显示滑块数值 -->
<TextView
android:id="@+id/textview_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
/>
<!-- 可以用android:thumb指定滑块图片 -->
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="20"
/>
</LinearLayout>
MainActivity.java:
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.Window;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView state, num;
private SeekBar seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekbar);
state = (TextView) findViewById(R.id.textview_state);
num = (TextView) findViewById(R.id.textview_num);
seekBar.setOnSeekBarChangeListener(seekBarChange);
}
private OnSeekBarChangeListener seekBarChange = new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
state.setText("停止拖动");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
state.setText("开始拖动");
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
num.setText("进度值" + progress);
}
};
}