我有一个进度条,我想让它前进5秒。我正在尝试执行一个' for‘循环10次,每次循环运行时,进度条都会递增1/10。我有增加1/10的条形图的代码,但我现在正在尝试创建一个循环:
将条形图增加到1/10等待0.5秒...将条形图增加到2/10等待0.5秒...将条形图增加到3/10等待0.5秒...等。
到目前为止,这是我的代码,但它不起作用,它将条形图提升到10/10 (满)。有什么想法吗?
非常感谢。
for(int a = 0; a <= 10; a++){
if(mp1.isPlaying()){ // my 5 second wav file
int newProgress = pBar1.getProgress() + (pBar1.getMax() / 10);
if (newProgress < 0) {
newProgress = 0;
}
pBar1.setProgress(newProgress);
// pause for 0.5 seconds here//
}发布于 2012-08-09 06:45:16
Thread.sleep(500);将暂停半秒。但您必须在UI线程以外的线程中执行此操作。如果您将UI线程置于睡眠状态,则应用程序中的所有其他交互都将锁定,直到睡眠结束。
发布于 2012-08-09 06:56:53
你所问的问题是,虽然暂停0.5秒制作thread sleep很容易,但你的整个UI会冻结,这是不好的,你不应该这样做。
您真正的问题似乎是您想要一个进度条来显示您正在播放的音频剪辑中经过的时间。如果您使用的是MediaPlayer,则可以使用getCurrentPosition和getDuration为任何大小的音频剪辑计算此值。即:
//Calculate the current clip position as a value between 0 and 100
int progress = (int) ((float) mp1.getCurrentPosition() / mp1.getDuration() * 100);https://stackoverflow.com/questions/11804898
复制相似问题