封面图:
简介
更新说明
v 1.0
first release
todo
在线音乐可以免下载加入我的音乐列表
在线音乐自动缓存
编辑音乐信息
项目公开api
在线音乐:
天气数据:
开源技术
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, centery, 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 开源在线音乐播放器的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
如对本文有疑问, 点击进行留言回复!!
Codeforces C. A Cookie for You (模拟 / 分类 / 贪心) (Round #654 Div.2)
DialogFragment弹窗(带黑色透明背景和不带黑色透明背景)
网友评论