如何更新显示歌曲当前时间位置的textview

时间:2017-12-10 23:59:55

标签: android runnable seekbar

所以我有一个搜索栏,它有效,当我拖动它时,歌曲从该位置开始播放,但我想要的是当我拖动搜索栏时,我想看到我的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();
}

在这里你可以看到我想要实现的目标

https://imgur.com/a/zEpWI

第一个gif是我现在拥有的,第二个是我想要的

修改

我仍然没有发现如何做到这一点,有人知道怎么做吗? 我想我必须将代码放在onProgressChanged中,我尝试添加歌曲当前时间和总持续时间,但是当我滚动搜索栏时如何更新textview,就像我在帖子中添加的gif一样。 https://imgur.com/a/zEpWI

1 个答案:

答案 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));
    }
}