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();
}
}