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