Android 開源在線音樂播放器
封面圖:

簡介
- 波尼音樂是一款開源Android在線音樂播放器。
- 播放本地音樂與在線音樂
- 在線音樂排行榜,如熱歌榜、新歌榜等
- 高仿云音樂的黑膠唱片專輯封面
- 歌詞顯示,自動搜索歌詞
- 夜間模式
- 定時(shí)關(guān)閉
更新說明
v 1.0
First Release
TODO
在線音樂可以免下載加入我的音樂列表
在線音樂自動緩存
編輯音樂信息
項(xiàng)目公開API
在線音樂:百度音樂
天氣數(shù)據(jù):高德地圖
開源技術(shù)
okhttp-utils
Android-Universal-Image-Loader
關(guān)鍵代碼
黑膠唱片專輯封面繪制流程
@Override
protected void onDraw(Canvas canvas) {
// 1.繪制頂部虛線
mTopLine.setBounds(0, getTop(), getWidth(), getTop() + mTopLineHeight);
mTopLine.draw(canvas);
// 2.繪制黑膠唱片外側(cè)半透明邊框
mCoverBorder.setBounds(mDiscPoint.x - mCoverBorderWidth, mDiscPoint.y - mCoverBorderWidth,
mDiscPoint.x + mDiscBitmap.getWidth() + mCoverBorderWidth, mDiscPoint.y +
mDiscBitmap.getHeight() + mCoverBorderWidth);
mCoverBorder.draw(canvas);
// 3.繪制黑膠
// 設(shè)置旋轉(zhuǎn)中心和旋轉(zhuǎn)角度,setRotate和preTranslate順序很重要
mDiscMatrix.setRotate(mDiscRotation, mDiscCenterPoint.x, mDiscCenterPoint.y);
// 設(shè)置圖片起始坐標(biāo)
mDiscMatrix.preTranslate(mDiscPoint.x, mDiscPoint.y);
canvas.drawBitmap(mDiscBitmap, mDiscMatrix, null);
// 4.繪制封面
mCoverMatrix.setRotate(mDiscRotation, mCoverCenterPoint.x, mCoverCenterPoint.y);
mCoverMatrix.preTranslate(mCoverPoint.x, mCoverPoint.y);
canvas.drawBitmap(mCoverBitmap, mCoverMatrix, null);
// 5.繪制指針
mNeedleMatrix.setRotate(mNeedleRotation, mNeedleCenterPoint.x, mNeedleCenterPoint.y);
mNeedleMatrix.preTranslate(mNeedlePoint.x, mNeedlePoint.y);
canvas.drawBitmap(mNeedleBitmap, mNeedleMatrix, null);
}
歌詞繪制流程
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 中心Y坐標(biāo)
float centerY = getHeight() / 2 + mTextSize / 2 + mAnimOffset;
// 無歌詞文件
if (!hasLrc()) {
float centerX = (getWidth() - mCurrentPaint.measureText(label)) / 2;
canvas.drawText(label, centerX, centerY, mCurrentPaint);
return;
}
// 畫當(dāng)前行
String currStr = mLrcTexts.get(mCurrentLine);
float currX = (getWidth() - mCurrentPaint.measureText(currStr)) / 2;
canvas.drawText(currStr, currX, centerY, mCurrentPaint);
// 畫當(dāng)前行上面的
for (int i = mCurrentLine - 1; i >= 0; i--) {
String upStr = mLrcTexts.get(i);
float upX = (getWidth() - mNormalPaint.measureText(upStr)) / 2;
float upY = centerY - (mTextSize + mDividerHeight) * (mCurrentLine - i);
// 超出屏幕停止繪制
if (upY - mTextSize < 0) {
break;
}
canvas.drawText(upStr, upX, upY, mNormalPaint);
}
// 畫當(dāng)前行下面的
for (int i = mCurrentLine + 1; i < mLrcTimes.size(); i++) {
String downStr = mLrcTexts.get(i);
float downX = (getWidth() - mNormalPaint.measureText(downStr)) / 2;
float downY = centerY + (mTextSize + mDividerHeight) * (i - mCurrentLine);
// 超出屏幕停止繪制
if (downY > getHeight()) {
break;
}
canvas.drawText(downStr, downX, downY, mNormalPaint);
}
}
以上就是Android 開源在線音樂播放器的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對本站的支持!
- Android音樂播放器制作 點(diǎn)擊歌曲實(shí)現(xiàn)播放(二)
- Android音樂播放器制作 掃描本地音樂顯示在手機(jī)(一)
- Android簡易音樂播放器實(shí)現(xiàn)代碼
- Android仿音樂播放器功能
- 詳解Android應(yīng)用開發(fā)--MP3音樂播放器代碼實(shí)現(xiàn)(一)
- Android MediaPlayer實(shí)現(xiàn)音樂播放器實(shí)例代碼
- Android 音樂播放器的開發(fā)實(shí)例詳解
- Android基于Service的音樂播放器
- Android繪制音樂播放器示波器
- Android音樂播放器制作 加入控制臺(三)
相關(guān)文章
Android中實(shí)現(xiàn)Webview頂部帶進(jìn)度條的方法
這篇文章主要介紹了Android中實(shí)現(xiàn)Webview頂部帶進(jìn)度條的方法,當(dāng)前很流行的一個(gè)效果,就是打開網(wǎng)頁時(shí)會在頂部顯示一個(gè)打開進(jìn)度條,需要的朋友可以參考下2015-01-01
Android自定義Button并設(shè)置不同背景圖片的方法
這篇文章主要介紹了Android自定義Button并設(shè)置不同背景圖片的方法,涉及Android自定義控件的功能實(shí)現(xiàn)與布局相關(guān)技巧,需要的朋友可以參考下2016-01-01
Android開發(fā)之時(shí)間日期操作實(shí)例
這篇文章主要介紹了Android開發(fā)之時(shí)間日期操作,是Android程序開發(fā)中常見的一個(gè)功能,需要的朋友可以參考下2014-08-08
Android Studio打包.so庫到apk中實(shí)例詳解
這篇文章主要介紹了Android Studio打包.so庫到apk中實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Android RecyclerView顯示Item布局不一致解決辦法
這篇文章主要介紹了Android RecyclerView顯示Item布局不一致解決辦法的相關(guān)資料,需要的朋友可以參考下2017-07-07
android自定義彈出框樣式的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了android自定義彈出框樣式的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05

