在android下顯示歌詞的控件:OpenLRC
a lrc view for android
一個可以在android下顯示歌詞的控件可以設置歌詞字體大小,當前行歌詞的顏色、其他行歌詞的顏色、行間距等。
使用方法:
1、xml布局:
<org.load.openlrc.LrcView
android:id="@+id/lrc"
android:layout_marginTop="100dip"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
lrc:currentTextColor="@android:color/holo_orange_light"
lrc:normalTextColor="@android:color/white"
lrc:rows="5"
lrc:textSize="20sp"
lrc:dividerHeight="10dip" /> 2、在activity中使用:
public class MainActivity extends Activity {
private LrcView mLrc;
private MediaPlayer mPlayer;
private String mDir = Environment.getExternalStorageDirectory() + File.separator + "Download" + File.separator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 歌曲路徑
String music = mDir + "1.mp3";
// 歌詞路徑
String lrc = mDir + "1.lrc";
mLrc = (LrcView) findViewById(R.id.lrc);
// 設置背景圖片
// 可以選擇不設置
// 最好是在真個屏幕設置該圖片
// 那樣更好看
mLrc.setBackground(BitmapFactory.decodeFile(mDir + "1.png"));
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(music);
mPlayer.setOnPreparedListener(new PreparedListener());
mPlayer.prepareAsync();
// 設置lrc的路徑
mLrc.setLrcPath(lrc);
} catch (Exception e) {
e.printStackTrace();
}
}
private class PreparedListener implements OnPreparedListener {
@Override
public void onPrepared(MediaPlayer mp) {
mPlayer.start();
new Thread(new Runnable() {
@Override
public void run() {
// 當歌曲還在播放時
// 就一直調用changeCurrent方法
// 雖然一直調用, 但界面不會一直刷新
// 只有當唱到下一句時才刷新
while(mPlayer.isPlaying()) {
// 調用changeCurrent方法, 參數是當前播放的位置
// LrcView會自動判斷需不需要下一行
mLrc.changeCurrent(mPlayer.getCurrentPosition());
// 當然這里還是要睡一會的啦
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
} 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
