我一直在按照教程实施SeekBar
到我的应用,但它无效。这是我试图这样做的方式。
public void run(){
int currentPosition = 0;
int total = player.getDuration();
sBar.setMax(total);
while (player.isPlaying()) {
try {
Thread.sleep(1000);
currentPosition = player.getCurrentPosition();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sBar.setProgress(currentPosition);
}
}
sBar
是我声明为全局变量的SeekBar
。
现在问题是教程中没有提到哪里可以调用这个run方法?我尝试在MediaPlayer
启动后立即调用它,但它无效。
答案 0 :(得分:1)
这显然意味着放在一个Thread对象中 - 它是一个无限循环,每次睡眠一秒钟。它无法进入UI线程,也不会冻结您的应用。
答案 1 :(得分:0)
我对此做了一个完全不同的方法并且它有效。以下是我现在的表现:
Runnable run = new Runnable(){
@Override
public void run() {
seekBarUpdate();
}
};
public void seekBarUpdate(){
sBar.setMax(player.getDuration());
sBar.setProgress(player.getCurrentPosition());
seekHandler.postDelayed(run, 25);
}