TextView Marquee текст сбрасывается на полпути, когда проигрыватель аудио играет в противном случае работает нормально, как ожидалось - PullRequest
0 голосов
/ 16 февраля 2020

Поэтому я использую 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);
            }
        }
...