Android开源在线音乐播放器安卓源码下载

时间:2016-08-04 21:33 来源:互联网 作者:源码搜藏收藏

  • 源码类别:项目源码
  • 源码大小:1 MB
  • 编码格式:gbk,utf8,不限
  • 运行环境:php+mysql
  • 广告推荐

波尼音乐是一款开源在线音乐播放器Android源码
  • 播放本地音乐与在线音乐
  • 在线音乐排行榜,如热歌榜、新歌榜等
  • 高仿云音乐的黑胶唱片专辑封面
  • 歌词显示,自动搜索歌词
  • 夜间模式
  • 定时关闭
更新说明
v 1.0
  • First Release
TODO
  • 在线音乐可以免下载加入我的音乐列表
  • 在线音乐自动缓存
  • 编辑音乐信息
项目公开API
  • 在线音乐:百度音乐
  • 天气数据:高德地图
开源技术
  • okhttp-utils
  • Android-Universal-Image-Loader
关键代码
黑胶唱片专辑封面绘制流程
[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);

    }

}


本站资源仅限于学习研究,严禁从事商业或者非法活动! 源码搜藏网所有源码来自互联网转载与用户上传分享,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

项目源码下载排行

最新文章