20189217 2018-2019-2 本地音乐播放器cocoMusic 代码分析

代码组成部分

代码调用关系

核心代码分析

自己实现的功能分析

悬浮按钮(FAB)切换歌单

在MainActivity中设置一个悬浮按钮(FloatingActionButton)【即截图右下角的蓝色圆形按钮】来切换播放列表(最近播放列表/我的收藏列表)。

代码分析:
此功能调用一个FloatingActionButton库--SpringFloatingActionMenu
首先,在项目的 build.gradle 中添加依赖

dependencies {
    ...
    implementation 'com.tiancaicc.springfloatingactionmenu:library:0.0.2'
    ...
}

在localMusicFragment中,在onCreate中添加fab的菜单按钮(最近播放和我的收藏)、设置动画类型、设置reveal效果的颜色、设置fab的位置、设置各个图标的resource。
//create your own FAB
//必须手动创建FAB, 并设置属性
final FloatingActionButton fab = new FloatingActionButton(mainActivity);

    fab.setType(FloatingActionButton.TYPE_NORMAL);
    fab.setImageResource(R.mipmap.heart_fill);
    fab.setColorPressedResId(R.color.colorPrimary);
    fab.setColorNormalResId(R.color.design_default_color_primary);
    fab.setColorRippleResId(R.color.white);
    fab.setShadow(true);

    new SpringFloatingActionMenu.Builder(mainActivity)
            .fab(fab)
            //add menu item via addMenuItem(bgColor,icon,label,label color,onClickListener)
            //添加菜单按钮参数依次是背景颜色,图标,标签,标签的颜色,点击事件
            .addMenuItem(R.color.colorAccent, R.mipmap.back1, "最近播放", R.color.colorAccent, this)
            .addMenuItem(R.color.colorAccent, R.mipmap.back1, "我的收藏", R.color.colorAccent, this)

            //you can choose menu layout animation
            //设置动画类型
            .animationType(SpringFloatingActionMenu.ANIMATION_TYPE_BLOOM)
            //setup reveal color while the menu opening
            //设置reveal效果的颜色
            .revealColor(R.color.colorPrimary)
            //set FAB location, only support bottom center and bottom right
            //设置FAB的位置,只支持底部居中和右下角的位置
            .gravity(Gravity.RIGHT | Gravity.BOTTOM)
            .onMenuActionListner(new OnMenuActionListener() {
                @Override
                public void onMenuOpen() {
                    //set FAB icon when the menu opened
                    //设置FAB的icon当菜单打开的时候
                    fab.setImageResource(R.mipmap.back1);
                }

                @Override
                public void onMenuClose() {
                    //set back FAB icon when the menu closed
                    //设置回FAB的图标当菜单关闭的时候
                    fab.setImageResource(R.mipmap.back1);
                }
            })
            .build();

相应地,onClick函数实现如下,通过menuItemView.getLabelTextView().getText()获取用户选中了fab的哪个菜单按钮:

public void onClick(View view) {
    MenuItemView menuItemView = (MenuItemView) view;
    menu = menuItemView.getLabelTextView().getText();
    if (menuItemView.getLabelTextView().getText() == "最近播放") {
        loadRecordData(); //准备最近播放的数据
        mainActivity.playService.setMp3Infos(recordMp3Infos);//播放列表切换为最近播放
        System.out.println("menuItemView record" + mainActivity.playService.mp3Infos);
        mainActivity.playService.setChangePlayList(PlayService.RECORD_MUSIC_LIST);
        mainActivity.pager.setCurrentItem(1);
    } else {
        loadLoveData(); //准备我的收藏的数据
        mainActivity.playService.setMp3Infos(loveMp3Infos);
        System.out.println("menuItemView love" + mainActivity.playService.mp3Infos);
        mainActivity.playService.setChangePlayList(PlayService.LOVE_MUSIC_LIST);
        mainActivity.pager.setCurrentItem(1);
    }
}

收藏(更多选项-收藏、下方播放条-收藏、播放页-收藏)

更多选项-收藏
下方播放条-收藏
播放页-收藏

数据库

猜你喜欢

转载自www.cnblogs.com/PNIDEMOOO/p/10887659.html