Thanks to visit codestin.com
Credit goes to github.com

Skip to content

axxxx1015/xiaomiproject

Repository files navigation

music_tttaaayyyx - 音乐社区项目

项目简介

本项目是2025年6月实践课程-音乐社区第二天的实践项目,实现了一个Android音乐社区应用,包含完整的音乐播放功能和歌词显示系统。 该说明文档借助claude-4完成。

项目要求

功能实现

第一天功能

闪屏页

  1. 用户第一次启动app时显示隐私内容,后续再次打开app将不再显示隐私内容了;状态保存在本地
  2. 卸载或者清除本地数据后,会重复步骤1
  3. 点击同意并使用,进入app首页,点击不同意,退出app
  4. 用户协议和隐私协议,点击"用户协议"跳转到浏览器并打开"https://www.mi.com",点击"隐私协议"跳转到浏览器并打开"https://www.xiaomiev.com/"
  5. 通过Activity转场动画,闪屏页自然过渡到首页,动画自由发挥

音乐首页

  1. 首页主页面包含以下类型:banner、横滑大卡、一行一列、一行两列
    • banner只有一张图片时,不可滑动
    • banner有多张图片时,可左右滑动,左右滑动可循环;可自动轮播;滑动效果可参考网易云音乐-推荐-banner
    • 每次滑动后,更新指示器的位置和状态
  2. 首页支持下拉刷新和上拉加载更多
  3. 类型可参考接口文档中的style、moduleName对应具体设计稿类型
  4. 包含歌曲封面图、歌曲名称、歌手名称
  5. 每个Item有个+号,点击弹出Toast:将音乐名称添加到音乐列表
  6. 点击Item弹出Toast:音乐名称
  7. 服务端没有返回模块名称,参考设计稿本地写死即可,我的歌曲是从mi端口获取的

第二天功能

音乐播放页面

  1. 点击音乐列表项跳转到播放页面:点击任意音乐项可跳转到音乐播放页面
  2. 播放当前歌曲并携带播放列表:播放当前选中的歌曲,并将当前模块的所有音乐作为播放列表
  3. 完整的播放控制界面
    • 关闭按钮(右上角)
    • 歌曲图片(圆形裁剪,旋转动画)
    • 歌曲名称和歌手名称
    • 进度条(可拖拽)
    • 播放时间显示
    • 循环模式切换(顺序播放、单曲循环、随机播放)
    • 上一首、下一首按钮
    • 播放/暂停按钮
    • 歌曲列表按钮
  4. MediaPlayer实现音乐播放:支持后台播放功能
  5. 封面旋转动画:歌曲播放时封面图片有旋转动画效果
  6. 播放模式管理:支持三种播放模式切换,点击切换模式
  7. 播放控制按钮功能:所有播放控制按钮功能完整实现
  8. 进度条拖拽:支持拖拽进度条调整播放位置
  9. 左右滑动切换视图:支持左右滑动切换封面视图和歌词视图
  10. 歌词视图高亮:歌词视图高亮显示当前播放的歌词行
  11. 动态背景色:页面背景颜色根据歌曲图片主题色动态变化
  12. 关闭按钮动画:关闭按钮有从上往下划出的动画效果

歌词功能

  1. 歌词解析系统
    • 实现LRC格式歌词解析器(LyricParser)
    • 支持时间戳解析和歌词文本提取
    • 支持制作信息显示(作词、作曲、编曲等)
  2. 歌词显示界面
    • 歌词列表显示,支持滚动
    • 当前播放歌词行高亮显示
    • 歌词文本阴影效果,适应深色背景
    • 歌词与播放进度同步
  3. 歌词获取机制
    • 从网络API获取歌词URL
    • 异步下载歌词文件
    • 支持示例歌词显示(当无法获取网络歌词时)
  4. 歌词同步功能
    • 根据播放时间自动高亮当前歌词
    • 歌词滚动定位到当前播放位置
    • 实时更新歌词显示状态

UI优化

  1. 页面布局优化
    • 默认显示封面视图
    • 删除页面指示器(两个点)
    • 调整播放控制按钮位置,使其更居中
  2. 封面显示优化
    • 使用CardView实现完美圆形裁剪
    • 去除多余部分,显示效果更佳
    • 保持旋转动画功能
  3. 歌词显示优化
    • 歌词文本颜色优化,适应深色背景
    • 添加文字阴影效果,提高可读性
    • 歌词显示区域边界明确,不延伸到进度条
  4. 交互体验优化
    • 修复退出按钮失效问题
    • 优化按钮层级和点击响应
    • 简化退出逻辑,提高稳定性

第三天(2025-06-30)

  • 完善首页悬浮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                               # 项目说明

运行说明

  1. 使用Android Studio打开项目
  2. 确保已安装Android SDK 31+
  3. 同步Gradle依赖
  4. 连接Android设备或启动模拟器
  5. 点击运行按钮

开发环境

  • 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

提交记录

第一天(2025-06-28)

  • 完成音乐社区第一天实践项目
    • 实现闪屏页和隐私协议页面提示
    • 实现音乐首页多种布局类型
    • 实现音乐播放功能
    • 实现下拉刷新和上拉加载

第二天(2025-06-29)

  • 完成音乐播放页面完整功能
    • 实现音乐播放页面UI和交互
    • 实现MediaPlayer音乐播放功能
    • 实现播放控制(播放/暂停、上一首/下一首、进度条拖拽)
    • 实现播放模式切换(顺序播放、单曲循环、随机播放)
    • 实现封面旋转动画和动态背景色
    • 实现左右滑动切换封面和歌词视图
    • 实现完整的歌词系统(解析、显示、同步)
    • 优化UI布局和用户体验
    • 修复各种交互问题和显示效果

第三天(2025-06-30)

  • 完善首页悬浮View,支持当前音乐、状态、进度条、播放/暂停、播放列表按钮,进度与播放页同步,支持后台播放和动画跳转。
  • 首次打开App随机选择首页模块自动播放,并将该模块所有音乐加入播放列表。
  • 音乐播放页支持弹出音乐列表弹窗、收藏动画(本地保存)、滑动关闭,播放/暂停/切歌按钮风格统一。
  • 播放列表弹窗支持显示标题、数量、删除、切歌、去重添加、显示当前播放模式,去除+号按钮,顶部增加播放模式显示。
  • 统一资源引用,补充缺失图标,修复构建和资源问题。
  • 优化UI细节,首页悬浮View和播放页按钮布局、风格、颜色统一,适配深色背景。
  • 移除无用bat脚本,精简项目结构。
  • 多次修复和完善交互体验,确保功能完整、界面美观、交互流畅。

功能特色

  1. 完整的音乐播放体验:从列表选择到播放控制,提供完整的音乐播放功能
  2. 智能歌词同步:支持LRC格式歌词解析,实时同步播放进度
  3. 美观的UI设计:圆形封面、动态背景、流畅动画
  4. 多种播放模式:满足不同用户的播放习惯
  5. 响应式布局:适配不同屏幕尺寸,提供良好的用户体验

开发者:tayx
项目时间:2025年6月
项目类型:Android音乐社区应用

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages