# 安卓音乐播放器 **Repository Path**: cattle-horse/android-music-player ## Basic Information - **Project Name**: 安卓音乐播放器 - **Description**: 安卓音乐播放器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 3 - **Created**: 2023-04-14 - **Last Updated**: 2024-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安卓音乐播放器 ## 设计思路 设计思路仿各大音乐播放器的界面,主要分为两个页面 1. 歌曲列表界面 2. 音乐播放界面 项目采用 $MVVM$ 架构 $MainActivity$ 为入口程序,通过 $Fragment$ 进行页面切换,$ViewModel$ 实现各种业务逻辑 程序的音乐播放器 $Exoplayer$ 位于 $ViewModel$ 的 $Repository$ 中,所有页面共用一个 $Exoplayer$ ## 文件说明 - $MediaItemData$ :存储一项歌曲的一些数据,如歌曲图片,歌曲名称,媒体信息等,未来会采用数据库的方式存储 - $ImageRound$ :工具类,实现了布局中的圆形图片标签 - $TopWindowUtils$ :工具类,显示弹窗信息 - $ListFragment$ :管理和定义音乐列表页面 - $MainActivity$ :程序入口 - $MediaItemDataAdapter$ :适配器,实现 $ListView$ 的数据绑定 - $ViewHolder$ :缓存信息,优化 $ListView$ 的刷新 - $MusicPlayerFragment$ :管理和定义音乐播放页面 - $SpeedBottomSheetFragment$ :更改音乐倍数的页面,会在音乐播放页面开启 - $TaskBottomSheetFragmen$ :音乐播放任务列表页面 - $Repository$ :实现业务逻辑、数据的修改 及 共享 $ListFragment$ 与 $MusicPlayerFragment$ 通过 $obeserve$ 观察者监听数据 进行 相对应的页面变化 $Repository$ 中音乐的循环模式(随机播放,顺序播放,单曲循环)是 对播放任务列表的数据进行修改,其中播放任务列表的 $ArrayList$ 存储了待播放的音乐的 $id$,通过选择这个 $id$ 来设置 $Exoplayer$ 中的 $MediaItem$,以此实现音乐的循环模式 $Layout$ 布局部分主要采用线性布局($LinearLayout$) ## 运行结果 音乐列表界面 ![1](image/1.png) 播放列表界面 ![2](image/2.png)