2017-12-10 23 views
0

シークバーを持っているので、ドラッグすると曲がその位置から再生を開始しますが、シークバーをドラッグしているときは、現在の曲の位置をドラッグしているときに更新しているテキストビューを見ることができます。そのため、ユーザーは特定の時間から開始することができます。曲から現在の時間位置を示すテキストビューを更新する方法

今すぐシークバーをドラッグすると、テキストビューが変更されず、ドラッグを開始したときの最後の位置のみが表示されます。

これは、あなたが最初のGIFは私が今持っているものであり、第二に

https://imgur.com/a/zEpWI

を達成しようと何イム見ることができます私のコードここ

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

+0

そのiが – Vince

+0

ワンマイナーなポイントを望むものをちょっと漠然とし、更新する必要はありません場合、私は申し訳ありませんが、曲の期間ごとに1/10秒。 'tvSongTotalTime'は一定と仮定できます。 – Sam

+0

'onStopTrackingTouch()'の 'updateProgressBar();'を 'tvSongCurrentTime.setText(" + utilities.msToTimer(mediaPlayer.getCurrentPosition())) 'に置き換えるとどうなりますか? – Sam

答えて

0

は次のとおりです。

@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)); 
    } 
} 
+0

あなたのコードを試しましたが、うまくいきません – Vince

+0

GIFがアップロードされていますので、私は何を意味するのかを明確にすることができます – Vince

+0

https://imgur.com/a/zEpWI、ここで私は何を意味するのかを明確にしました – Vince

関連する問題