我有一个进度条,我想要提前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//
}
答案 0 :(得分:1)
Thread.sleep(500);
会暂停半秒钟。但是你必须在UI线程以外的线程中执行此操作。如果您将UI线程置于休眠状态,则应用程序中的所有其他交互将锁定,直到睡眠结束。
答案 1 :(得分:1)
你问的问题是,虽然很容易暂停0.5秒我制作一个thread sleep,你的整个用户界面将会冻结,这是不好的,你不应该这样做。
你真正的问题似乎是你需要一个进度条来说明你正在播放的音频片段所经过的时间。如果您使用的是MediaPlayer,则可以使用getCurrentPosition
和getDuration
为任意大小的音频剪辑计算此值。即:
//Calculate the current clip position as a value between 0 and 100
int progress = (int) ((float) mp1.getCurrentPosition() / mp1.getDuration() * 100);