}
public void onLyricChanged(int lyric_index){
int lyricStart = 0;
if(lyric_index > 0){
lyricStart = mLyricEndList.get(lyric_index - 1);
}
int lyricEnd = mLyricEndList.get(lyric_index);
mLyricEdit.setSelection(lyricStart, lyricEnd);
mLyricEdit.invalidate();
Log.i(TAG, String.format("lyric= %d, setSelection(%d, %d)", lyric_index, lyricStart, lyricEnd));
}
在歌词读入时,将所有歌词练成一个长字符串,并记住每一句歌词在字符串中的位置。
在播放服务的状态发生变化时,更新按钮的状态。
最后是跳到选定歌词的代码,还是一样的简单。
public void OnLyricClick(View v){
EditText et = (EditText)v;
int sel_start = et.getSelectionStart();
for(int i = 0; i < mLyricEndList.size(); ++i){
if(sel_start < mLyricEndList.get(i))
{
mProxy.seekToLyric(i);
break;
}
}
}
结合选中的位置,和保存的歌词位置信息,找到歌词的序号,让播放服务跳到那句就行了。
作者 “来自大连”