刚才误删了一次。。。还好有个打开的页面没关掉
先上效果图
中间就是同步滚动歌词的部分了 现在是最简单的效果 当前播放字体是红色 其余部分为白色
右侧是一个类似Gallery效果的 可以上下拖动 选择唱片 拟3D 效果目前感觉还行
记录下2部分的实现原理
————————————
首先是歌词同步,这个很大部分都是参考了YOYOPlayer这个开源的播放器
http://www.blogjava.net/hadeslee/archive/2008/01/11/173489.html 作者的开发手机 非常详细的关于歌词滚动的代码实现 Android上的实现基本也是一样
主要包括3个类 Sentence Lyric 以及LyricView
Sentence是指单个歌词对象 其中包括了歌词的开始时间,结束时间,以及歌词内容,方法包含检索当前时间是否属于该歌词,歌词的着色属性等 其中有一个非常重要的方法 用于获得偏移量
偏移量是什么呢 就是一句歌词在每次刷新的时候移动的距离 计算该距离的公式是:
(字体高度+空隙)*((当前时间-开始时间)*1.0 /(结束时间-开始时间))
即距离除以歌词播放持续的时间占的比例(乘1.0是保持浮点型)
Lyric类保有Sentence对象的集合 也就是一首歌的完整歌词 拥有一个List<Sentence> 里面根据播放时间顺序将每句歌词都排列好了(边解析LRC文件边排序) 也就是之后要做的简单来说就是依次取出歌词对象 显示 Lyric同时定义了如何绘制自己 也就是drawLyc方法
画歌词的思路是 在中心位置画当前歌词(根据当前播放时间获得) 之后一次在上方画前面的部分 下方画后面的部分 当tmpY<0 表示画不下了 则停止不画 需要注意的是 这里所说的中心位置 是指屏幕中心+偏移量 得到的当前歌词绘制位置
LyricView就是要在布局文件中使用的控件了 这个类非常简单 只是继承View 在onDraw中将画笔和画布传给Lyric,调用其drawLyc方法来绘制自己
在代码中使用LyricView 需要为其设定Lyric 也就是画的歌词集合 以及 当前音乐播放的时间
————————————
接下来是右侧的滑动唱片
现在实现的方式将坐标都写死了 扩展移植性很差 应该需要再抽离出一层接口会更好 这里只是记录下思路
在当前画面上显示的是9张图片 比如叫做ABCDEFGHI 这里先绘制最后的两张图片A I 设置最高的透明度 尺寸 然后绘制B H。。依次类推 这样就有了一个拟3D效果
那么如何让他滚起来呢 我们将视线放到单独的张图片上 比如这里的中心图片E E到F的过程是一个线性移动的过程 也就是说只是简单的x+ y+ width,height- alpha-的过程 同样这样的模式可以应用到每一个图片上 比如这里我们设定中间过程有4帧 当第4帧时 E就到了F的位置 而D到了E的位置 此时就恢复到了初始的状态 只是每个位置上的图片变了下 变成了ZABCDEFGH 知道了这样的过程 就可以进行进一步操作了
根据刚才总结到的 定义了一个类似结构体的东西 其中分别是posX posY横纵坐标点alpha透明度以及width height值 比如叫做PosAlphaSize类
之后定义的是我们的自定义View控件 当然他自身会保有一个需要在界面上显示的图片List(只是显示的9张) 然后onDraw方法中 根据PosAlphaSize中的参数 将9张图片分别绘制在相应的位置 (先画2侧 再绘制中心图片)
在主界面中,有一个所有封面图片的集合 需要显示的图片就在是这个图片集合中的一个子序列 有一个当前帧的计数器(0-4) 还有一个当前显示图片序列的下标index 以确定哪些图片被显示 然后将这个图片子序列传入到自定义的View中 让其自身invalidate绘制 每一帧的具体位置都被定义了 即每帧每张图片的坐标(一个类似2维的数组,只需根据这个坐标进行绘制就好了) 当然这也是做得不好的地方 正是因为坐标写死了 导致移植性很差 不过目前先实现效果
最后 给这个View添加上手势动作 onTouch Gesture等等 绘制下一帧的代码主要写在onScroll和onFling方法中。
——————————————
总结的比较乱 只是介绍下实现的原理 代码写得很是乱 还需要再进行优化
相关推荐
Android开源音乐播放器之自动滚动歌词 Android开源音乐播放器之在线音乐列表自动加载更多 前言 上一节我们仿照云音乐实现了黑胶唱片专辑封面,这节我们该实现歌词显示了。当然,歌词不仅仅是显示就完了,作为一个有...
8. **手势和触摸事件**:应用可能支持手势操作,如滑动改变音量、旋转操作等。 9. **多媒体框架**:使用Android的多媒体框架处理音频流,如AudioTrack或AudioManager。 10. **权限管理**:访问存储和音频流可能...
《安卓Android源码——仿唱片机音乐播放器》是一个针对Android平台开发的音乐播放应用,其设计灵感来源于经典的唱片机,旨在提供一种独特的音乐播放体验。这个项目涉及到多个Android开发的关键知识点,包括UI设计、...
在本项目"css3唱片滑动效果.zip"中,我们主要关注的是利用现代Web技术,尤其是CSS3,JavaScript,jQuery以及HTML5来实现一个动态的唱片滑动展示效果。这个效果通常用于创建互动式音乐库或者音乐播放平台,提供用户...
在Android平台上,开发一款仿唱片机音乐播放器是一项有趣且具有挑战性的任务。这个源码项目可以帮助我们深入了解Android音视频处理、UI设计以及自定义视图等关键知识点。以下是基于"Android仿唱片机音乐播放器源码...
在本项目中,“Android应用源码仿唱片机音乐播放器.zip”是一个包含了完整的Android应用程序源代码,用于构建一个设计风格类似传统唱片机的音乐播放器。这个应用可能具有独特的视觉效果和交互方式,旨在为用户带来...
仿云音乐黑胶唱片,以及在线歌词搜索等功能 跟之前上传的相比,多了: 1.歌词显示(实现歌词滚动功能) 2.来电监听 3.控制音量 4.在线歌词搜索,下载功能 5.修复了当手机锁屏,解锁后歌词进度等信息还是之前一首歌...
"Flash唱片封面图片滚动效果"是一种常见的网页设计技术,它利用Adobe Flash平台的动画和交互功能,创造出吸引人的动态展示,使得唱片封面或者专辑图片能够以流畅且富有创意的方式呈现给用户。 Flash技术曾经是...
本特效采用html css3实现类似唱片专辑封面的滑动效果,鼠标经过时唱片图案会自动弹出。 css3实现唱片滑动特效演示图: 点击查看演示
本案例聚焦于一个特定的JS特效——“Flash唱片封面图片滚动效果”。这个效果通常是用于在线音乐平台或者唱片售卖网站,以吸引用户的注意力并展示丰富的音乐内容。 首先,我们需要理解“Flash”在这里并不指Adobe ...
在Android开发中,实现特定视觉效果常常是提升用户体验的关键步骤之一。这个压缩包"Android 仿百度播放器圆形图片旋转效果.rar"提供了一个实例,教你如何在Android应用中创建一个类似百度网页音乐播放器的圆形图片...
在本案例中,我们关注的是一个使用CSS3实现的唱片专辑滑动效果,这是一种创新的用户体验设计,常用于展示音乐、艺术或者任何与专辑相关的项目。以下是对这个"css3唱片滑动效果"的详细解析: 首先,滑动效果是通过...
《仿唱片机音乐播放器——Android源码解析》 在移动设备上,音乐播放器是不可或缺的应用之一。本文将深入探讨一个特别的项目——“应用源码之仿唱片机音乐播放器”,它不仅是一个功能齐全的音乐播放软件,还通过...
该压缩包文件“Android应用源码之仿唱片机音乐播放器.rar”包含了开发一个具有唱片机风格的Android音乐播放器的源代码。这个项目可能是为了帮助开发者了解如何在Android平台上创建一个具有独特视觉效果和交互体验的...
一款很个性的音乐播放器,是仿照老式留声机样式的播放器,使用之前先选几首歌然后添加到一个半圆形的歌曲列表里,然后先按右上角的开关按钮,会有一个留声机唱针缓缓右移的动画效果。项目工程量不大,源码注释比较少...
在本压缩包“Android应用源码之仿唱片机音乐播放器.zip”中,你将获得一个专门为Android平台设计的音乐播放器应用的源代码。这个应用借鉴了传统的唱片机概念,为用户提供了独特的音乐体验。下面,我们将深入探讨其中...