文章目录
- 一.前言
- 二.预览
- 1.主界面
- 2.歌单页
- 3.歌词页
- 4.播放列表
- 5.mini
- 6.设置
- 三.心得
- 1.解耦
- 2.体验优化
- 3.歌词显示
- 四.总结
一.前言
传送门:
1.python3GUI–打造一款音乐播放器By:PyQt5(附下载地址)
2.python3GUI–音乐播放器第二弹By:PyQt5(附下载地址)
3.python3GUI–音乐播放器第三弹By:PyQt5(附下载地址)
本次在前面三个版本上进行代码删减,去掉冗余功能,注重提升用户体验,更换API,提高播放成功率。
二.预览
1.主界面
主界面延续之前的风格,对部分内容进行删减。
增加了歌单推荐,每张歌单都有30首歌曲
模仿web版x易云的banner,点击banner后,就会对banner推荐内容进行搜索
2.歌单页
上图为本地(下载)歌单
上图为在线歌单 or 搜索结果页
3.歌词页
本次优化了歌词页的歌词逻辑,增加了交互动画
增加了歌词页切换动画
4.播放列表
播放列表风格不变
5.mini
mini仿照x易云的mini窗口,做了相关交互动画
6.设置
本次重新绘制了设置窗口,设置窗口分为基本设置、搜索下载设置、高级设置。
三.心得
1.解耦
解耦思路不仅仅应用在逻辑代码设计过程中,应该用在软件开发的各个环节当中,举个例子:通过设置多个QTableWidget将同类的不同数据区别展示,通过设置QStackedWidget的索引,展示相应的table,能够有效地在UI代码上解耦。
2.体验优化
如果您下载了本次我打包好的exe文件,就能够明显体验到,本次的软件启动、响应有了明显的提升,本次在UI设计上使用了缓存思路,把可能重复使用的资源文件(如:banner、歌手图片)缓存到本地,以提升整个UI响应速度,通过QThread配合信号和槽机制,让耗时的操作在子线程中进行,避免阻塞UI主线程,其中,在线音乐的源、歌词、歌图、歌手图、搜索结果、歌单图等数据都是在子线程中进行的。
3.歌词显示
记得前面笔者单独说了下歌词的显示机制,虽然简单实现了歌词的显示,并且能够和当前播放歌词匹配,但是仔细的话能够发现还是存在bug,比如歌词进度对不上、最后一局歌词无法渲染。本次重新调整了歌词显示逻辑,仍然使用正则切割出指定格式的歌词item,但是歌词的改变是通过QTimer实现的,并不是和player绑定,这样做提高了歌词的同步性、能够显示所有歌词。
四.总结
本次对音乐播放器进行了精简代码,约用了5500行代码,其中七分之三为UI代码,七分之三为逻辑代码,七分之一为引擎代码。本次提升了软件的稳定性、流畅性,打包好放在了这里,大家自取。