关于黑胶唱片动画view的浅析

近来有空,就自己做了个音乐相关的项目,叫做Tata音乐。目前已在360,安智市场,百度等上线了(应用宝由于内容涉及音乐资源需提供 《信息网络传播视听节目许可证》,故而弃之)。GitLab开源代码,GitHub开源源码

这款应用涉及的功能有:

1. 自主三方登录系统,采用自主注册加自己搭建后台开放接口(后台基于LeanCloud实现,所有数据均保存在LeanCloud,个人头像开放数据采用七牛存储平台)。由于现在三方ShareSDK和友盟等集成都很便捷,在上一个项目就有集成了,这次出于快速开发和考虑安装包的大小,选择不集成三方登录。

2.同步收藏,拥有登录自动同步已收藏歌曲,一键取消收藏

3.本地音乐实时扫描,在线音乐读取百度音乐API接口。具体关于百度音乐API的相关介绍,可以参考这篇文章。但是在使用过程中,发现接口返回的数据值存在一定的误差,需要自己调用的时候多加注意。

4。黑胶唱片效果和歌词展示,本应用的歌词采用的第三方的集成包,有兴趣可以去看看其源码:LrcView。本文将着重浅析黑胶唱片的实现。

5。其他功能,如切换夜间模式等,后续会添加换肤功能,字体调整,以及完善个人中心等(有空再搞)。


进入主题:

首先分析我们要的效果图,如下图所示

关于黑胶唱片动画view的浅析_第1张图片
分析布局

1.顶部一条细细的实线,用于跟唱片指针配合效果;

2.唱片指针,考虑动画契合度,即为了使指针能够放在黑胶正中,我们要对唱片指针的原始图片基于屏幕宽度重新动态微调宽高值,使其指针的高度为黑胶直径的一半。另外这个在暂停时会有一个旋转动画,因此注意选择好旋转圆心和半径坐标。

3.外围半透明圆环边侧,由于不需要动画旋转,相对简单

4.黑胶边框

5.唱片无限旋转:为了能使黑胶和封面能完美融合,因此我们需要固定它们的尺寸,这里设置黑胶直径为屏幕的3/4,封面直径为屏幕的一半,即封面直径为黑胶直径的2/3。

部分代码实现:

a.声明2,3,4等三个变量

关于黑胶唱片动画view的浅析_第2张图片
声明三个变量

b.考虑每次绘制都会进行重复计算,为了优化性能,我们把计算的过程放在onLayout中。

关于黑胶唱片动画view的浅析_第3张图片
坐标设定

c.绘制动画

关于黑胶唱片动画view的浅析_第4张图片
绘制整个布局的过程

d.无限旋转的动画过程,无限的原理是基于handler和run的配合。

关于黑胶唱片动画view的浅析_第5张图片
唱片360度旋转

e.关于指针的动画

关于黑胶唱片动画view的浅析_第6张图片
初始化设置指针两个状态
关于黑胶唱片动画view的浅析_第7张图片
触发动画

f.播放控制期间结合动画

关于黑胶唱片动画view的浅析_第8张图片
音乐控制触发动画效果:播放时启动旋转动画,播放指针动画,暂停时暂停动画,播放指针动画。

基于此,控件成以。部分代码思路借鉴网上,共勉。

部分截图如下:

关于黑胶唱片动画view的浅析_第9张图片
启动页
关于黑胶唱片动画view的浅析_第10张图片
黑胶唱片界面
关于黑胶唱片动画view的浅析_第11张图片
歌词界面
关于黑胶唱片动画view的浅析_第12张图片
播放列表界面
关于黑胶唱片动画view的浅析_第13张图片
切换列表


欢迎加入IT怪圈。一个我们自己的圈子。

你可能感兴趣的:(关于黑胶唱片动画view的浅析)