SeekBar(拖动条)
效果如图:
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="1000"
android:id="@+id/seek"/>
编写SeekBarDemo文件:
package cn.lyhz; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; public class SeekBarDemo extends Activity{ SeekBar sb = null; TextView tv = null; //标记是否需要刷新 boolean flag = true; private Handler handler = new Handler(); protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.seekbar); super.onCreate(savedInstanceState); findView(); } private void findView(){ sb = (SeekBar)findViewById(R.id.seek); tv = (TextView)findViewById(R.id.seek); //设定拖动条的最大值,其将为该拖动条现实的基数。 sb.setMax(100); //SeekBar的方法注册一个监听器,当SeekBar发生改变时调用参数的对应方法 sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { //当游标移动停止时调用的方法 public void onStopTrackingTouch(SeekBar seekBar) { //设置标记为需要刷新 flag = true; //刷新 refresh(); } //当游标开始移动时调用该方法 public void onStartTrackingTouch(SeekBar seekBar) { //停止刷新 flag = false; } //当进度条游标被改变或者进度更改时调用该方法 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //更改TextView的内容 tv.setText("进度为:"+progress+"%"); } }); //粗昂监视就开始更新该拖动条 refresh(); } //该方法自动刷新拖动条的进度值 private void refresh() { new Thread(new Runnable() { public void run() { //当进度不到100,就更新progress的值 while(flag && sb.getProgress()<100){ try { //暂停1秒 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //将一个Runable对象添加到消息队列当中,并且当执行到该对象是执行run()方法 handler.post(new Runnable() { public void run() { //重新设置进度条当前的值 sb.setProgress(sb.getProgress()+1); } }); } } }).start(); } }