Поэтому я использую textview
, чтобы показать название / название песни вместе с textview
marquee в интерфейсе моего аудиоплеера. Как я уже упоминал в своем вопросе, textview
сбрасывается на полпути и запускается снова, когда мой проигрыватель musi c воспроизводит звук, но когда проигрыватель находится в режиме паузы, текст прокручивается правильно без дрожания.
Итак, я проверил что-то, как только я остановил проигрыватель и воспроизвел снова, джиттер останавливается, почему?
Вот код xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/roundcorner_player"
android:gravity="center">
<SeekBar
android:id="@+id/seekbar_player"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/SeekBarColor"/>
<ImageView
android:layout_below="@id/seekbar_player"
android:id="@+id/prev_player"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:layout_margin="8dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_skip_previous_24px"/>
<ImageView
android:layout_toEndOf="@id/prev_player"
android:layout_below="@id/seekbar_player"
android:id="@+id/playpause_player"
android:layout_width="54dp"
android:layout_height="54dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_play_circle_outline_24px"/>
<ImageView
android:layout_toEndOf="@id/playpause_player"
android:layout_below="@id/seekbar_player"
android:id="@+id/next_player"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:layout_margin="8dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_skip_next_24px" />
<LinearLayout
android:layout_below="@id/seekbar_player"
android:layout_toEndOf="@+id/next_player"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/songname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white50"
android:layout_margin="16dp"
android:layout_weight="1"
android:singleLine="true"
android:focusable="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:text="@string/song_title"/>
<TextView
android:id="@+id/playertime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:layout_margin="16dp"
android:text="@string/_00_00"/>
</LinearLayout>
</RelativeLayout>
> Here is the java
private void playMusicFile(String filePath,final String title){
if(mediaPlayer!=null) {
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
playButton.setImageResource(R.drawable.ic_pause_circle_outline_24px);
seekbarPayer.setMax(mp.getDuration());
updateMusicSeekbar();
songTitle.setText(title);
listView.setItemChecked(pos,true);
}
});
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
playButton.setImageResource(R.drawable.ic_play_circle_outline_24px);
stopPlayer();
}
});
seekbarPayer.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress);
seekBar.setProgress(progress);
playerTime.setText(millisecondsToTime(mediaPlayer.getCurrentPosition()));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
updateMusicSeekbar();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void playPause() {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
playButton.setImageResource(R.drawable.ic_pause_circle_outline_24px);
}else {
mediaPlayer.pause();
playButton.setImageResource(R.drawable.ic_play_circle_outline_24px);
}
}