本项目是2025年6月实践课程-音乐社区第二天的实践项目,实现了一个Android音乐社区应用,包含完整的音乐播放功能和歌词显示系统。 该说明文档借助claude-4完成。
- 用户第一次启动app时显示隐私内容,后续再次打开app将不再显示隐私内容了;状态保存在本地
- 卸载或者清除本地数据后,会重复步骤1
- 点击同意并使用,进入app首页,点击不同意,退出app
- 用户协议和隐私协议,点击"用户协议"跳转到浏览器并打开"https://www.mi.com",点击"隐私协议"跳转到浏览器并打开"https://www.xiaomiev.com/"
- 通过Activity转场动画,闪屏页自然过渡到首页,动画自由发挥
- 首页主页面包含以下类型:banner、横滑大卡、一行一列、一行两列
- banner只有一张图片时,不可滑动
- banner有多张图片时,可左右滑动,左右滑动可循环;可自动轮播;滑动效果可参考网易云音乐-推荐-banner
- 每次滑动后,更新指示器的位置和状态
- 首页支持下拉刷新和上拉加载更多
- 类型可参考接口文档中的style、moduleName对应具体设计稿类型
- 包含歌曲封面图、歌曲名称、歌手名称
- 每个Item有个+号,点击弹出Toast:将音乐名称添加到音乐列表
- 点击Item弹出Toast:音乐名称
- 服务端没有返回模块名称,参考设计稿本地写死即可,我的歌曲是从mi端口获取的
- 点击音乐列表项跳转到播放页面:点击任意音乐项可跳转到音乐播放页面
- 播放当前歌曲并携带播放列表:播放当前选中的歌曲,并将当前模块的所有音乐作为播放列表
- 完整的播放控制界面:
- 关闭按钮(右上角)
- 歌曲图片(圆形裁剪,旋转动画)
- 歌曲名称和歌手名称
- 进度条(可拖拽)
- 播放时间显示
- 循环模式切换(顺序播放、单曲循环、随机播放)
- 上一首、下一首按钮
- 播放/暂停按钮
- 歌曲列表按钮
- MediaPlayer实现音乐播放:支持后台播放功能
- 封面旋转动画:歌曲播放时封面图片有旋转动画效果
- 播放模式管理:支持三种播放模式切换,点击切换模式
- 播放控制按钮功能:所有播放控制按钮功能完整实现
- 进度条拖拽:支持拖拽进度条调整播放位置
- 左右滑动切换视图:支持左右滑动切换封面视图和歌词视图
- 歌词视图高亮:歌词视图高亮显示当前播放的歌词行
- 动态背景色:页面背景颜色根据歌曲图片主题色动态变化
- 关闭按钮动画:关闭按钮有从上往下划出的动画效果
- 歌词解析系统:
- 实现LRC格式歌词解析器(LyricParser)
- 支持时间戳解析和歌词文本提取
- 支持制作信息显示(作词、作曲、编曲等)
- 歌词显示界面:
- 歌词列表显示,支持滚动
- 当前播放歌词行高亮显示
- 歌词文本阴影效果,适应深色背景
- 歌词与播放进度同步
- 歌词获取机制:
- 从网络API获取歌词URL
- 异步下载歌词文件
- 支持示例歌词显示(当无法获取网络歌词时)
- 歌词同步功能:
- 根据播放时间自动高亮当前歌词
- 歌词滚动定位到当前播放位置
- 实时更新歌词显示状态
- 页面布局优化:
- 默认显示封面视图
- 删除页面指示器(两个点)
- 调整播放控制按钮位置,使其更居中
- 封面显示优化:
- 使用CardView实现完美圆形裁剪
- 去除多余部分,显示效果更佳
- 保持旋转动画功能
- 歌词显示优化:
- 歌词文本颜色优化,适应深色背景
- 添加文字阴影效果,提高可读性
- 歌词显示区域边界明确,不延伸到进度条
- 交互体验优化:
- 修复退出按钮失效问题
- 优化按钮层级和点击响应
- 简化退出逻辑,提高稳定性
- 完善首页悬浮View,支持当前音乐、状态、进度条、播放/暂停、播放列表按钮,进度与播放页同步,支持后台播放和动画跳转。
- 首次打开App随机选择首页模块自动播放,并将该模块所有音乐加入播放列表。
- 音乐播放页支持弹出音乐列表弹窗、收藏动画(本地保存)、滑动关闭,播放/暂停/切歌按钮风格统一。
- 播放列表弹窗支持显示标题、数量、删除、切歌、去重添加、显示当前播放模式,去除+号按钮,顶部增加播放模式显示。
- 统一资源引用,补充缺失图标,修复构建和资源问题。
- 优化UI细节,首页悬浮View和播放页按钮布局、风格、颜色统一,适配深色背景。
- 移除无用bat脚本,精简项目结构。
- 多次修复和完善交互体验,确保功能完整、界面美观、交互流畅。
- 网络请求: 使用Retrofit2 + OkHttp3进行网络请求
- 图片加载: 使用Glide加载网络图片,支持圆形裁剪
- 下拉刷新: 使用SwipeRefreshLayout实现下拉刷新
- 音乐播放: 使用MediaPlayer实现音频播放,支持后台播放
- 布局适配: 支持多种布局类型(Banner、横滑、单列、双列)
- 状态管理: 本地SharedPreferences保存用户隐私协议状态
- 动画效果: 使用ObjectAnimator实现封面旋转和页面切换动画
- 歌词解析: 自定义LRC格式歌词解析器
- 异步下载: 使用线程池实现歌词文件异步下载
- UI组件: 使用CardView、ViewPager2、RecyclerView等现代UI组件
music_tttaaayyyx/
├── app/
│ ├── src/main/
│ │ ├── java/com/example/music_tttaaayyyx/
│ │ │ ├── adapter/ # 适配器类
│ │ │ │ ├── BannerAdapter.java # Banner适配器
│ │ │ │ ├── MusicAdapter.java # 音乐列表适配器
│ │ │ │ ├── LyricsAdapter.java # 歌词适配器
│ │ │ │ └── MusicPlayerPagerAdapter.java # 播放页面适配器
│ │ │ ├── network/ # 网络请求相关
│ │ │ │ ├── ApiService.java # API服务接口
│ │ │ │ ├── HomePageResponse.java # 首页响应数据模型
│ │ │ │ └── RetrofitClient.java # Retrofit客户端
│ │ │ ├── MainActivity.java # 主页面
│ │ │ ├── SplashActivity.java # 闪屏页
│ │ │ ├── AgreementActivity.java # 用户协议页
│ │ │ ├── MusicPlayerActivity.java # 音乐播放页面
│ │ │ ├── MusicPlayer.java # 音乐播放器
│ │ │ ├── Music.java # 音乐数据模型
│ │ │ ├── MusicDataManager.java # 音乐数据管理
│ │ │ ├── LyricParser.java # 歌词解析器
│ │ │ ├── LyricDownloader.java # 歌词下载器
│ │ │ ├── SampleLyrics.java # 示例歌词数据
│ │ │ └── Playlist.java # 播放列表模型
│ │ └── res/
│ │ ├── layout/ # 布局文件
│ │ │ ├── activity_main.xml # 主页面布局
│ │ │ ├── activity_music_player.xml # 播放页面布局
│ │ │ ├── fragment_cover_view.xml # 封面视图布局
│ │ │ ├── fragment_lyrics_view.xml # 歌词视图布局
│ │ │ └── item_lyrics.xml # 歌词项布局
│ │ ├── drawable/ # 图标资源
│ │ └── values/ # 资源文件
│ └── build.gradle.kts # 应用级构建配置
├── gradle/ # Gradle配置
├── build.gradle.kts # 项目级构建配置
└── README.md # 项目说明
- 使用Android Studio打开项目
- 确保已安装Android SDK 31+
- 同步Gradle依赖
- 连接Android设备或启动模拟器
- 点击运行按钮
- Android Studio Hedgehog | 2023.1.1
- Android SDK 31+
- Java 11
- Gradle 8.9.2
- androidx.appcompat:appcompat:1.7.0
- com.google.android.material:material:1.12.0
- androidx.constraintlayout:constraintlayout:2.2.1
- retrofit2:retrofit:2.9.0
- com.github.bumptech.glide:glide:4.16.0
- androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
- androidx.viewpager2:viewpager2:1.0.0
- androidx.recyclerview:recyclerview:1.3.2
- androidx.cardview:cardview:1.0.0
- androidx.palette:palette:1.0.0
- 完成音乐社区第一天实践项目
- 实现闪屏页和隐私协议页面提示
- 实现音乐首页多种布局类型
- 实现音乐播放功能
- 实现下拉刷新和上拉加载
- 完成音乐播放页面完整功能
- 实现音乐播放页面UI和交互
- 实现MediaPlayer音乐播放功能
- 实现播放控制(播放/暂停、上一首/下一首、进度条拖拽)
- 实现播放模式切换(顺序播放、单曲循环、随机播放)
- 实现封面旋转动画和动态背景色
- 实现左右滑动切换封面和歌词视图
- 实现完整的歌词系统(解析、显示、同步)
- 优化UI布局和用户体验
- 修复各种交互问题和显示效果
- 完善首页悬浮View,支持当前音乐、状态、进度条、播放/暂停、播放列表按钮,进度与播放页同步,支持后台播放和动画跳转。
- 首次打开App随机选择首页模块自动播放,并将该模块所有音乐加入播放列表。
- 音乐播放页支持弹出音乐列表弹窗、收藏动画(本地保存)、滑动关闭,播放/暂停/切歌按钮风格统一。
- 播放列表弹窗支持显示标题、数量、删除、切歌、去重添加、显示当前播放模式,去除+号按钮,顶部增加播放模式显示。
- 统一资源引用,补充缺失图标,修复构建和资源问题。
- 优化UI细节,首页悬浮View和播放页按钮布局、风格、颜色统一,适配深色背景。
- 移除无用bat脚本,精简项目结构。
- 多次修复和完善交互体验,确保功能完整、界面美观、交互流畅。
- 完整的音乐播放体验:从列表选择到播放控制,提供完整的音乐播放功能
- 智能歌词同步:支持LRC格式歌词解析,实时同步播放进度
- 美观的UI设计:圆形封面、动态背景、流畅动画
- 多种播放模式:满足不同用户的播放习惯
- 响应式布局:适配不同屏幕尺寸,提供良好的用户体验
开发者:tayx
项目时间:2025年6月
项目类型:Android音乐社区应用