我想在 TextView 中突出显示文本,因为 MediaPlayer 会播放预先录制的文本声音。(如卡拉OK)现在,我只想在声音的开头不覆盖任何文字,在声音的结尾处覆盖所有文字。(我突出显示的文本应该看起来像一个进度条。)
我尝试isPlaying()
了 MediaPlayer 对象的方法,为了获取文本的索引,我计算了百分比。
我的代码如下。
while(mediaPlayer.isPlaying())
{
int percentage = mediaPlayer.getCurrentPosition() / mediaPlayer.getDuration() * 100;
int end = text.length() * percentage / 100;
story.setText("Hello world!", BufferType.SPANNABLE);
Spannable span = new SpannableString(story.getText());
text = story.getText().toString();
span.setSpan(new BackgroundColorSpan(0xFF00FF00), 0, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
story.setText(span);
}
这似乎阻塞了线程,因为我的应用程序冻结了。我尝试使用 AsyncTask 但失败了。
你知道我该如何让它工作吗?