シークバーを持っているので、ドラッグすると曲がその位置から再生を開始しますが、シークバーをドラッグしているときは、現在の曲の位置をドラッグしているときに更新しているテキストビューを見ることができます。そのため、ユーザーは特定の時間から開始することができます。曲から現在の時間位置を示すテキストビューを更新する方法
今すぐシークバーをドラッグすると、テキストビューが変更されず、ドラッグを開始したときの最後の位置のみが表示されます。
これは、あなたが最初のGIFは私が今持っているものであり、第二に
を達成しようと何イム見ることができます私のコードここ
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();
}
です私が手に入れたいものです
EDIT;
私はこれを行う方法を見つけていない、誰かがそれを行う方法を知っていますか? 私はコードをonProgressChangedの中に入れなければならないと思うが、現在の時間と全体の持続時間を追加しようとしたが、投稿に追加されたgifのように、シークバーをスクロールするとテキストビューを更新できる。シークバーの位置が変化したときにonProgressChanged
を想定し https://imgur.com/a/zEpWI
そのiが – Vince
ワンマイナーなポイントを望むものをちょっと漠然とし、更新する必要はありません場合、私は申し訳ありませんが、曲の期間ごとに1/10秒。 'tvSongTotalTime'は一定と仮定できます。 – Sam
'onStopTrackingTouch()'の 'updateProgressBar();'を 'tvSongCurrentTime.setText(" + utilities.msToTimer(mediaPlayer.getCurrentPosition())) 'に置き換えるとどうなりますか? – Sam