封面图:
简介
更新说明
v 1.0
First Release
Todo
在线音乐可以免下载加入我的音乐列表
在线音乐自动缓存
编辑音乐信息
开源技术
okhttp-utils
Android-Universal-Image-Loader
关键代码
黑胶唱片专辑封面绘制流程
@Override protected void onDraw(Canvas canvas) { // 1.绘制顶部虚线 mTopLine.setBounds(0,getTop(),getWidth(),getTop() + mTopLineHeight); mTopLine.draw(canvas); // 2.绘制黑胶唱片外侧半透明边框 mCoverBorder.setBounds(mdiscPoint.x - mCoverBorderWidth,mdiscPoint.y - mCoverBorderWidth,mdiscPoint.x + mdiscBitmap.getWidth() + mCoverBorderWidth,mdiscPoint.y + mdiscBitmap.getHeight() + mCoverBorderWidth); mCoverBorder.draw(canvas); // 3.绘制黑胶 // 设置旋转中心和旋转角度,setRotate和preTranslate顺序很重要 mdiscMatrix.setRotate(mdiscRotation,mdiscCenterPoint.x,mdiscCenterPoint.y); // 设置图片起始坐标 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坐标 float centerY = getHeight() / 2 + mTextSize / 2 + mAnimOffset; // 无歌词文件 if (!hasLrc()) { float centerX = (getWidth() - mCurrentPaint.measureText(label)) / 2; canvas.drawText(label,centerX,centerY,mCurrentPaint); return; } // 画当前行 String currStr = mLrcTexts.get(mCurrentLine); float currX = (getWidth() - mCurrentPaint.measureText(currStr)) / 2; canvas.drawText(currStr,currX,mCurrentPaint); // 画当前行上面的 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); } // 画当前行下面的 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 开源在线音乐播放器的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。