登录 立即注册
安币:

Android开源在线音乐播放器

[复制链接]
来自: MrlLee 分类: Android精品源码 上传时间: 2016-6-24 10:41:05
Tag:Android 开源 在线 音乐 播放器
立即下载
收藏

项目介绍:

简介
波尼音乐是一款开源Android在线音乐播放器。
  • 播放本地音乐与在线音乐
  • 在线音乐排行榜,如热歌榜、新歌榜等
  • 高仿云音乐的黑胶唱片专辑封面
  • 歌词显示,自动搜索歌词
  • 夜间模式
  • 定时关闭
更新说明
v 1.0
  • First Release
TODO
  • 在线音乐可以免下载加入我的音乐列表
  • 在线音乐自动缓存
  • 编辑音乐信息
项目公开API开源技术关键代码
黑胶唱片专辑封面绘制流程
[Java] 查看源文件 复制代码
@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);
}

歌词绘制流程
[Java] 查看源文件 复制代码
@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);
    }
}
游客,如果您要查看本帖隐藏内容请回复


相关源码推荐:

我来说两句
所有评论(1255)
szhua 2016-6-24 11:02:19
正需要啊,感谢楼主无私分享!
回复
Coco柯柯丶 2016-6-24 11:18:56
谢谢 分享  可以的。。。。。。。。。。。。。。。。
回复
Coco柯柯丶 2016-6-24 11:19:38
感谢分享,安卓巴士有你更精彩:)
回复
lklk55555 2016-6-24 11:24:06
66666666666666666
回复
安卓新手上路 2016-6-24 11:47:30
支持支持顶起!!!
回复
安卓新手上路 2016-6-24 11:48:07
淡定,淡定,淡定……
回复
gumi 2016-6-24 12:53:51
感谢分享,安卓巴士有你更精彩:)
回复
上传代码
查看数:22978 收藏数:53 下载数: 点赞数:12
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表