菜鸟日记 201204 音乐播放器 进度条seekBar 跟随音乐播放进度改变progress

好神奇,必须得加一句 *1.0f ,变浮点数,最后把式子结果强转成int。。。

那个是100ms我试试看!1ms检测一次
但是也很明显!!!
因为不是按照歌曲长度来变的,所以会跳过几秒钟,这样不好
我试着把setMax()变成歌曲长度
然后1ms一动
因为100精确度太低了!!!
//设置进度条当前位置为音频播放位置 ,ms
mSeekBar.setProgress((int) (mediaPlayer.getCurrentPosition()* 1.0f / mediaPlayer.getDuration()*100));
break;
改成—>
mSeekBar.setProgress(mediaPlayer.getCurrentPosition())

我知道了!!!因为progress和mediaPlayer.getDuration()都是整数,整除/当然除不尽,因为一定是前者<后者的关系!所以需要×1.0f 在大小不变情况下将结果变成浮点数类型!

fine!

int型数据由于是整数,如果将一个小数赋值给整形变量,会对小数进行取整,所以类似0.01这类的数会被取整为0,所以在使用SeekBar这类控件的方法,比如setProgress(int progress)时,要注意接收的必须是整数,但是整数有可能被取整就出问题

分享这个,就是 *1.0f 的问题!其余还在探索中!

//此时进度是ms数,因为把歌曲时长ms数设置为seekBar长度了,需要÷mediaplayer正播放音乐的长度的ms数
tvDes.setText(“当前进度:” + (int)( (progress1.0f/mediaPlayer.getDuration()) * 100 )+ “%”);
这里是我用来方便自己看的一个播放进度占总进度的百分比数,一定注意,×100前它还是个不到1的小数,所以(int)(progress
1.0f/mediaPlayer.getDuration() )* 100 不加后面那个括号是不对滴,其实相除加不加括号都对,但强转整型,就不能是这样了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值