【Android Studio】开发——音乐播放器界面设计

一.效果实现图

app页面:

    

项目结构图:

二.视频效果展示

三.功能说明

   主页面点击后进入播放页面,播放页面中间为可滑动的音乐列表,底部可对音乐进行播放和暂停

需要实现的功能:

(1)Activity之间的跳转

(2)recycleview的滑动效果

(3)server服务实现音乐播放

四.功能实现

(1)Activity之间的跳转:

   设置2个activity,并通过点击button实现activity的跳转

(2)recycleview的滑动效果

    1. 添加依赖

 implementation ("androidx.recyclerview:recyclerview:1.3.0")

2. 配置 XML 布局

  在播放页面的 XML 布局文件中添加 RecyclerView,并编写item相关布局文件的xml

item的xml文件效果图

3.设置数据类和适配器

  1. 设置数据类:根据需求创建一个数据类,用于存储每个Item的数据。例如,可以创建一个简单的Java类来表示每个Item的数据。
  2. 创建适配器:适配器(Adapter)负责将数据集转换成RecyclerView可以展示的视图。适配器需要继承RecyclerView.Adapter类,并实现其三个核心方法:onCreateViewHolderonBindViewHoldergetItemCount

数据类代码:

package com.example.myapplication;

public class LocalMusicBean {
    private int headId;
    private String song;
    private String singer;


    public LocalMusicBean() {
    }

    public LocalMusicBean(int headId, String song, String singer) {
        this.headId = headId;
        this.song = song;
        this.singer = singer;

    }

    public int getId() {
        return headId;
    }

    public void setId(int headId) {
        this.headId = headId;
    }

    public String getSong() {
        return song;
    }

    public void setSong(String song) {
        this.song = song;
    }

    public String getSinger() {
        return singer;
    }

    public void setSinger(String singer) {
        this.singer = singer;
    }

}

4.在Activity或Fragment中配置RecyclerView

在Activity或Fragment的onCreate方法中,找到RecyclerView控件,并设置其LayoutManager和Adapter

   RecyclerView recyclerView = findViewById(R.id.local_music_rv);
        List<LocalMusicBean> mDatas  =  new ArrayList<>();
        LocalMusicBean music1= new LocalMusicBean(R.drawable.firework,"firework","Katy Perry");
        LocalMusicBean music2= new LocalMusicBean(R.drawable.gnzw,"光年之外","邓紫棋");
        LocalMusicBean music3= new LocalMusicBean(R.drawable.goodbye,"再见","邓紫棋");
        LocalMusicBean music4= new LocalMusicBean(R.drawable.rbl,"日不落","蔡依林");
        LocalMusicBean music5= new LocalMusicBean(R.drawable.roar,"Roar","Katy Perry");
        LocalMusicBean music6= new LocalMusicBean(R.drawable.wg,"white grey","Xceon");
        LocalMusicBean music7= new LocalMusicBean(R.drawable.withoutyou,"without you","Avicii");
        LocalMusicBean music8= new LocalMusicBean(R.drawable.ld,"last dance","500");
        mDatas.add(music1);
        mDatas.add(music2);
        mDatas.add(music3);
        mDatas.add(music4);
        mDatas.add(music5);
        mDatas.add(music6);
        mDatas.add(music7);
        mDatas.add(music8);

        LocalMusicAdapter localMusicAdapter = new LocalMusicAdapter(this,mDatas);

        LinearLayoutManager layoutManager= new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
        recyclerView.setLayoutManager(layoutManager);

        recyclerView.setAdapter(localMusicAdapter);

(3)server服务实现音乐播放

server服务代码:

public class MyService extends Service {
    MediaPlayer mediaPlayer;
    public MyService() {

    }

    @Override
    public int onStartCommand(Intent intent,int flags,int startId){
        mediaPlayer=MediaPlayer.create(this,R.raw.firework);
        mediaPlayer.start();

        Log.d("MusicService","开始播放");

        return  super.onStartCommand(intent,flags,startId);
    }

    @Override
    public void onDestroy(){

        Log.d("MusicService","停止播放");
        mediaPlayer.stop();
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

五.出现的问题

在写代码的过程中,大部分问题都是细节没有理解导致的错误,但在把代码传入github时,出现报错kex_exchange_identification: Connection closed by remote host

与github网站连接失败

解决办法:

把目前所使用的网络的dns服务器地址从自动获取改为144.144.144.144

六.总结与改进

本次android开发对我来说是一次全新的体验,接触开发让我知道该如何进行多人合作完成一个项目,过程中也有不少的难点与困难。对于本次的app,接下来我会添加新的功能,让recyclerview中的item和底部播放进行联动,并实现点击音乐图片,进入音乐详情页。

七.源代码地址

代码已上传git,下行点击进入

github源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值