所以我有一个搜索栏,它有效,当我拖动它时,歌曲从该位置开始播放,但我想要的是当我拖动搜索栏时,我想看到我的textview显示当前歌曲位置更新时我拖动它,所以用户可以选择一个特定的时间开始。
现在当我拖动搜索栏时,textview不会改变,只显示我开始拖动时的最后位置。
这是我的代码
private Runnable mUpdateTime = new Runnable() {
@Override
public void run() {
long songCurrentTime = mediaPlayer.getCurrentPosition();
long songTotalTime = mediaPlayer.getDuration();
tvSongCurrentTime.setText(""+utilities.msToTimer(songCurrentTime));
tvSongTotalTime.setText(""+utilities.msToTimer(songTotalTime));
int progress = (int)(utilities.getProgressPercentage(songCurrentTime, songTotalTime));
seekBar.setProgress(progress);
mHandler.postDelayed(this, 100);
}
};
public void updateProgressBar(){
mHandler.postDelayed(mUpdateTime, 100);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mHandler.removeCallbacks(mUpdateTime);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mHandler.removeCallbacks(mUpdateTime);
int songTotalTime = mediaPlayer.getDuration() ;
int currentPosition = utilities.progressToTimer(seekBar.getProgress(), songTotalTime);
mediaPlayer.seekTo(currentPosition);
updateProgressBar();
}
在这里你可以看到我想要实现的目标
第一个gif是我现在拥有的,第二个是我想要的
修改
我仍然没有发现如何做到这一点,有人知道怎么做吗? 我想我必须将代码放在onProgressChanged中,我尝试添加歌曲当前时间和总持续时间,但是当我滚动搜索栏时如何更新textview,就像我在帖子中添加的gif一样。 https://imgur.com/a/zEpWI
答案 0 :(得分:0)
假设onProgressChanged
是搜索栏位置发生变化的时间:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser) {
long songCurrentTime = mediaPlayer.getCurrentPosition();
long songTotalTime = mediaPlayer.getDuration();
tvSongCurrentTime.setText(""+utilities.msToTimer(songCurrentTime));
tvSongTotalTime.setText(""+utilities.msToTimer(songTotalTime));
}
}