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

打印 上一主题 下一主题

主题 949|帖子 949|积分 2847

一.效果实现图

app页面:
    




项目布局图:




二.视频效果展示




三.功能说明

   主页面点击后进入播放页面,播放页面中心为可滑动的音乐列表,底部可对音乐举行播放和暂停
需要实现的功能:
(1)Activity之间的跳转
(2)recycleview的滑动效果
(3)server服务实现音乐播放

四.功能实现

(1)Activity之间的跳转:
   设置2个activity,并通过点击button实现activity的跳转
(2)recycleview的滑动效果
    1. 添加依赖

  1. implementation ("androidx.recyclerview:recyclerview:1.3.0")
复制代码
2. 设置 XML 布局

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


3.设置数据类和适配器


  • 设置数据类:根据需求创建一个数据类,用于存储每个Item的数据。比方,可以创建一个简朴的Java类来表示每个Item的数据。
  • 创建适配器:适配器(Adapter)负责将数据集转换成RecyclerView可以展示的视图。适配器需要继承RecyclerView.Adapter类,并实现其三个核心方法:onCreateViewHolder、onBindViewHolder和getItemCount。
数据类代码:
  1. package com.example.myapplication;
  2. public class LocalMusicBean {
  3.     private int headId;
  4.     private String song;
  5.     private String singer;
  6.     public LocalMusicBean() {
  7.     }
  8.     public LocalMusicBean(int headId, String song, String singer) {
  9.         this.headId = headId;
  10.         this.song = song;
  11.         this.singer = singer;
  12.     }
  13.     public int getId() {
  14.         return headId;
  15.     }
  16.     public void setId(int headId) {
  17.         this.headId = headId;
  18.     }
  19.     public String getSong() {
  20.         return song;
  21.     }
  22.     public void setSong(String song) {
  23.         this.song = song;
  24.     }
  25.     public String getSinger() {
  26.         return singer;
  27.     }
  28.     public void setSinger(String singer) {
  29.         this.singer = singer;
  30.     }
  31. }
复制代码
4.在Activity或Fragment中设置RecyclerView

在Activity或Fragment的onCreate方法中,找到RecyclerView控件,并设置其LayoutManager和Adapter
  1.    RecyclerView recyclerView = findViewById(R.id.local_music_rv);
  2.         List<LocalMusicBean> mDatas  =  new ArrayList<>();
  3.         LocalMusicBean music1= new LocalMusicBean(R.drawable.firework,"firework","Katy Perry");
  4.         LocalMusicBean music2= new LocalMusicBean(R.drawable.gnzw,"光年之外","邓紫棋");
  5.         LocalMusicBean music3= new LocalMusicBean(R.drawable.goodbye,"再见","邓紫棋");
  6.         LocalMusicBean music4= new LocalMusicBean(R.drawable.rbl,"日不落","蔡依林");
  7.         LocalMusicBean music5= new LocalMusicBean(R.drawable.roar,"Roar","Katy Perry");
  8.         LocalMusicBean music6= new LocalMusicBean(R.drawable.wg,"white grey","Xceon");
  9.         LocalMusicBean music7= new LocalMusicBean(R.drawable.withoutyou,"without you","Avicii");
  10.         LocalMusicBean music8= new LocalMusicBean(R.drawable.ld,"last dance","500");
  11.         mDatas.add(music1);
  12.         mDatas.add(music2);
  13.         mDatas.add(music3);
  14.         mDatas.add(music4);
  15.         mDatas.add(music5);
  16.         mDatas.add(music6);
  17.         mDatas.add(music7);
  18.         mDatas.add(music8);
  19.         LocalMusicAdapter localMusicAdapter = new LocalMusicAdapter(this,mDatas);
  20.         LinearLayoutManager layoutManager= new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
  21.         recyclerView.setLayoutManager(layoutManager);
  22.         recyclerView.setAdapter(localMusicAdapter);
复制代码
(3)server服务实现音乐播放
server服务代码:
  1. public class MyService extends Service {
  2.     MediaPlayer mediaPlayer;
  3.     public MyService() {
  4.     }
  5.     @Override
  6.     public int onStartCommand(Intent intent,int flags,int startId){
  7.         mediaPlayer=MediaPlayer.create(this,R.raw.firework);
  8.         mediaPlayer.start();
  9.         Log.d("MusicService","开始播放");
  10.         return  super.onStartCommand(intent,flags,startId);
  11.     }
  12.     @Override
  13.     public void onDestroy(){
  14.         Log.d("MusicService","停止播放");
  15.         mediaPlayer.stop();
  16.         super.onDestroy();
  17.     }
  18.     @Override
  19.     public IBinder onBind(Intent intent) {
  20.         // TODO: Return the communication channel to the service.
  21.         throw new UnsupportedOperationException("Not yet implemented");
  22.     }
  23. }
复制代码
五.出现的题目

在写代码的过程中,大部分题目都是细节没有理解导致的错误,但在把代码传入github时,出现报错kex_exchange_identification: Connection closed by remote host
与github网站连接失败
解决办法:
把现在所使用的网络的dns服务器地点从自动获取改为144.144.144.144



六.总结与改进

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

七.源代码地点

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表