Я работаю над приложением Android, которое показывает произвольную текстовую строку из ArrayList и воспроизводит короткий аудиоклип с помощью MediaPlayer, по нажатию кнопки.Текст отображается в анимации, которая имитирует пишущую машинку (каждый символ добавляется один за другим с задержкой).
В настоящее время аудиоклип воспроизводится только один раз при нажатии, и я ищу способ сохранить звукцикл до завершения анимации текста.
Мне не удалось найти метод, который позволил бы мне определить, когда были добавлены все строковые символы, и соответствующим образом остановить зацикливание звука.
Моя пишущая машинкамодель, которая обеспечивает анимацию:
public class TypeWriter extends android.support.v7.widget.AppCompatTextView {
private CharSequence mText;
private int mIndex;
private long mDelay = 150; // in ms
public TypeWriter(Context context) {
super(context);
}
public TypeWriter(Context context, AttributeSet attrs) {
super(context, attrs);
}
private Handler mHandler = new Handler();
private Runnable characterAdder = new Runnable() {
@Override
public void run() {
setText(mText.subSequence(0, mIndex++));
if (mIndex <= mText.length()) {
mHandler.postDelayed(characterAdder, mDelay);
}
}
};
public void animateText(CharSequence txt) {
mText = txt;
mIndex = 0;
setText("");
mHandler.removeCallbacks(characterAdder);
mHandler.postDelayed(characterAdder, mDelay);
}
public void setCharacterDelay(long m) {
mDelay = m;
}
}
Мой onClick:
// Start MediaPlayer
mp.start();
mp.setLooping(true);
// Get string from ArrayList
Random randomNumber = new Random();
selector = randomNumber.nextInt(176);
// Typewriter animation
tvQuote.setText("");
tvQuote.setCharacterDelay(40);
tvQuote.animateText(listOfQuotes.get(selector));
mp.release();
У кого-нибудь есть предложения, как это осуществить?Заранее спасибо.