SeekBar 控件的使用 -- 用於播放器的進度(可拖動)
//一個 SeekBar 控件android
一、在res/layout 佈局 界面ide
代碼佈局
<RelativeLayout 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"
>this
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>線程
</RelativeLayout>xml
------------------
二、在MainActivity 實現 功能代碼對象
代碼get
public class MainActivity extends Activity implements OnSeekBarChangeListener{
//聲明 控件 對象
private SeekBar seekbar;
private Timer timer = new Timer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到 seekbar控件
seekbar = (SeekBar) this.findViewById(R.id.seekbar);
//設置 控件 最大值 爲100
seekbar.setMax(100);
//設置 控件的 監聽
seekbar.setOnSeekBarChangeListener(this);
//計時器從0開始 500毫秒 跑一次
timer.schedule(new MyTask(), 0, 500);
}
public class MyTask extends TimerTask{it
@Override
public void run() {
// TODO Auto-generated method stub
//獲取 SeekBar 當前進度
int progress = seekbar.getProgress();
//進度條 按3刻度走一次
progress+=3;
if(progress >= seekbar.getMax()){
// 問題待解決
//正常 理解 -- 當 進度 大於等於 設置的 最大進度 就把當前進度 設置
//成0開始 可是 在LogCat 打印信息的時候
//progress = 0
seekbar.setProgress(0);
Log.i(tag, "progress:" + seekbar.getProgress() );
}
//progress = 103 -- 也就是說 該線程 已在 在 if 語句 和該語句 來回 跑 why?
seekbar.setProgress(progress);
Log.i(tag, "progress:" + progress );
}
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
}
class