当前位置: 源码素材网 » Android教程 » 详情页

Android 制作唱片旋转的音乐播放器 附代码解析

  •   时间:2020-01-02
  • 概述:播放器

Android 制作一个唱片式音乐播放器,模仿网易音乐播放器的音乐播放效果,主要使用Bitmap类中的 creatBitmap()方法、BitmapFactory 类中的 decodeResource()方法,下面是代码解析:

创建一个播放音乐的服务类,命名为“MusicSenace”,主要用于当界面对用户不可见时,还 能继续播放音乐,关键代码如下:

//编写个内部的广播
class MusicReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();   //获取action
        if (action.equals(ACTION_OPT_MUSIC_PLAY)) {  //音乐播放
            play(mCurrentMusicIndex);
        } else if (action.equals(ACTION_OPT_MUSIC_PAUSE)) {  //音乐暂停
            pause();  //音乐暂停
        } else if (action.equals(ACTION_OPT_MUSIC_LAST)) { //上一首
            last(); //上一首音乐的方法
        } else if (action.equals(ACTION_OPT_MUSIC_NEXT)) {  //下一首
            next();  //下一首音乐的方法
        } else if (action.equals(ACTION_OPT_MUSIC_SEEK_TO)) { //寻找音乐
            seekTo(intent); //查找音乐
        }
    }
}

创建MusicData类,该类主要用来获取音乐文件,包括音乐名称及图片等,代码如下:

public class MusicData implements Serializable {
    private int mMusicRes;       //音乐资源id
    private int mMusicPicRes;    //专辑图片id
    private String mMusicName;   //音乐名称
    private String mMusicAuthor; //作者
    /**
     * 用于其他界面调用
     */
    public MusicData(int mMusicRes, int mMusicPicRes, String mMusicName, String mMusicAuthor) {
        this.mMusicRes = mMusicRes;
        this.mMusicPicRes = mMusicPicRes;
        this.mMusicName = mMusicName;
        this.mMusicAuthor = mMusicAuthor;
    }
    public int getMusicRes() {
        return mMusicRes;
    }
    public int getMusicPicRes() {
        return mMusicPicRes;
    }
    public String getMusicName() {
        return mMusicName;
    }
    public String getMusicAuthor() {
        return mMusicAuthor;
    }
}

创建DisplayUtil类,用于设置唱片与唱针的比例及宽度与高度,关键代码如下:

public class DisplayUtil {
    /*手柄起始角度*/
    public static final float ROTATION_INIT_NEEDLE = -30;
    /*截图屏幕宽高*/
    private static final float BASE_SCREEN_WIDTH = (float) 1080.0;
    private static final float BASE_SCREEN_HEIGHT = (float) 1920.0;
    /*唱针宽高、距离等比例*/
    public static final float SCALE_NEEDLE_WIDTH = (float) (276.0 / BASE_SCREEN_WIDTH);
    public static final float SCALE_NEEDLE_MARGIN_LEFT = (float) (500.0 / BASE_SCREEN_WIDTH);
    public static final float SCALE_NEEDLE_PIVOT_X = (float) (43.0 / BASE_SCREEN_WIDTH);
    public static final float SCALE_NEEDLE_PIVOT_Y = (float) (43.0 / BASE_SCREEN_WIDTH);
    public static final float SCALE_NEEDLE_HEIGHT = (float) (413.0 / BASE_SCREEN_HEIGHT);
    public static final float SCALE_NEEDLE_MARGIN_TOP = (float) (43.0 / BASE_SCREEN_HEIGHT);
    /*唱盘比例*/
    public static final float SCALE_DISC_SIZE = (float) (813.0 / BASE_SCREEN_WIDTH);
    public static final float SCALE_DISC_MARGIN_TOP = (float) (190 / BASE_SCREEN_HEIGHT);
    /*专辑图片比例*/
    public static final float SCALE_MUSIC_PIC_SIZE = (float) (533.0 / BASE_SCREEN_WIDTH);
    /*设备屏幕宽度*/
    public static int getScreenWidth(Context context) {
        return context.getResources().getDisplayMetrics().widthPixels;
    }
    /*设备屏幕高度*/
    public static int getScreenHeight(Context context) {
        return context.getResources().getDisplayMetrics().heightPixels;
    }
}

制作完成后,看看效果,还不错吧!本实例中唱片背景为透明颜色,若不喜欢,自己可修改唱片背景图片。

若需要完整的源代码,可在此下载:Android 仿网易唱片式音乐播放器

    相关声明:

      若“Android 制作唱片旋转的音乐播放器 附代码解析”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。