SeekBar和ProgressBar同样都是进度条控件,但是SeekBar可以人为拖动改变控件进度。他的布局文件设置和ProgressBar差不多,但是activity操作有所不同。他可以监听开始拖动,拖动时,拖动停止三种状态,可以在这三种情况下设置操作。代码如下:
package cn.edu.qtech.csc.lcb.seekbardemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends Activity {
//控件对象
private SeekBar testSeekBar;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutseekbardemo);
//根据ID值取得SeekBar对象和TextView对象
testSeekBar = (SeekBar)findViewById(R.id.seekbar);
textView = (TextView)findViewById(R.id.info);
testSeekBar.setMax(100); //设置进度条的最大值是100
testSeekBar.setProgress(30); //设置初始位置
//为SeekBar设置监听器,必须重写下列3个方法
testSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
//在进度开始改变时执行
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
int i= seekBar.getProgress(); //获取进度条的进度值
textView.setText("Start value is "+i); //在TextView上显示进度
}
//当进度发生改变时执行
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser) //判断是谁修改的进度值?
textView.setText("Current value is "+progress+" --from user!");
else
textView.setText("Current value is "+progress+" --from program!");
}
//在停止拖动时执行
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int i= seekBar.getProgress(); //获取进度条的进度值
textView.setText("ok, the final value is "+i);
}
});
//程序设置方式改变进度值处理
((Button)findViewById(R.id.test)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (testSeekBar.getProgress()<testSeekBar.getMax())
testSeekBar.setProgress(testSeekBar.getProgress()+10);//进度值未满则进度增长10
else
testSeekBar.setProgress(0); //若进度条满则重新计数
}
});
}
}