这两天有个任务,说是要写一个QQ音乐播放器歌词的那种效果,毕竟刚学自定义View,没有什么思路,然后就Google.写了一个歌词效果,效果图在后面,下面是我整理的代码。...首先实现这种效果有两种方式: 1.自定义View里重载onDraw方法,自己绘制歌词 2.用ScrollView实现 第一种方式比较精确,但要支持滑动之后跳转播放的话难度很大,所以我选择第二种,自定义ScrollView...这里动态的向第二个布局里面添加了显示歌词的TextView,并利用ViewTreeObserver得到每个textview的高度,方便知道每个textview歌词所要滑动到的高度。...System.out.println("===="+index+"======"); //滚动handle不能放在这,因为,这是滚动监听事件,滚动到下一次,handle又会发送一次消息,出现意想不到的效果...time; } public String getLrc() { return lrc; } public void setLrc(String lrc) { this.lrc = lrc; } } 效果图
功能描述:锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、锁屏状态下列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示...总效果预览图.gif ---- 第一部分:锁屏效果包括:锁屏歌曲信息和远程控制音乐播放 ① 锁屏歌曲信息显示 ?...效果类似于网易云音乐锁屏时的效果 //添加喜欢按钮 MPFeedbackCommand *likeCommand = commandCenter.likeCommand;...当前播放时间点 self.currentRow 当前时间点歌词的位置 //歌词滚动显示 for ( int i = (int)(self.lrcArray.count...,随着播放的进度而改变。
功能描述:锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、锁屏状态下列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示...[总效果预览图.gif] **** 第一部分:锁屏效果包括:锁屏歌曲信息和远程控制音乐播放 ① 锁屏歌曲信息显示 [iOS11以下锁屏信息预览] //展示锁屏歌曲信息:图片、歌词、进度、歌曲名、演唱者、...效果类似于网易云音乐锁屏时的效果 //添加喜欢按钮 MPFeedbackCommand *likeCommand = commandCenter.likeCommand;...当前播放时间点 self.currentRow 当前时间点歌词的位置 //歌词滚动显示 for ( int i = (int)(self.lrcArray.count...,随着播放的进度而改变。
先看下效果吧 由于实现这个效果的重心是在于js,html 和 css 大家看代码就明白了 html 歌词滚动效果 <audio src="https.../assets/data.<em>js</em>"; /** * 将歌词字符 转换为对象的形式 * obj = {time:开始时间, words: 歌词内容} */ const parseLrc = ()...const findIndex = () => { // 播放器当前时间 const curTime = doms.audio.currentTime; for (let i...if (curTime < resulr[i].time) { return i - 1; } } // 找遍了都没找到(说明播放到最后一句
博客地址:https://ainyi.com/59 写在前面 这是我今年(2018)年初的小项目,当时也是手贱,不想用别的播放器,想着做一个自己的网页播放器,有个歌曲列表、可关键词搜索、歌词滚动播放的效果...https://jquery.com layer 弹窗插件:http://layer.layui.com 复制粘贴库插件:https://www.npmjs.com/package/clipboard-js...上面部分的参数及方法基本涵盖播放器该有的功能,定义好了整个播放器对象所需要的参数和方法,就可以进行具体开发了 歌词联动播放 具体谈谈这个功能的实现 歌词解析,我之前做的==乐诗博客==采用的是自己写的一种歌词解析滚动播放的方法...js 正则表达式全部替换的方式 替换方式 var reg = /-/g; // g表示全部替换 ,要替换的字符串是- createTime = createTime.replace(reg,"/")...== 就可以直接做一个 for in 循环将每句歌词添加到歌词区域,将时间添加到每句歌词的样式控制 class 名 根据每句歌词的时间,就可以在播放器的 timeupdate 监听事件里实现滚动播放歌词了
需求 使用node在终端实现歌词自动播放的功能。....*)/g 提取歌词文件内容 fs文件系统的 readFile() 将歌词转化为毫秒值 将时间转化为时间戳,便于使用延时器实现歌词播放 使用正则表达式分理出m,s,ms 然后转化为毫秒...(\d{2})/ 使用延时器播放歌词 代码 // 封装函数将时间转化为毫秒值 // 例如 [00:00.00] function toNumber(time) { // 使用正则匹配时间...// 提取结束 break break; } let [, time, word] = result // 使用延时器播放歌词...setTimeout(() => { console.log(word) }, toNumber(time)) } }) 效果
本文实例为大家分享了Android实现歌词滚动效果的具体代码,供大家参考,具体内容如下 自定义TextView public class VerticalScrollTextView extends TextView
最近在做Android 的MP3播放的项目,要实现歌词的自动滚动,以及同步显示。 lyric的歌词解析主要用yoyoplayer里面的,显示部分参考了这里 ,这里只是模拟MP3歌词的滚动。...先上一下效果图: ? 滚动实现的代码其实也简单。显示画出当前时间点的歌词,然后再分别画出改歌词后面和前面的歌词,前面的部分往上推移,后面的部分往下推移,这样就保持了当前时间歌词在中间。...mPaint.setTextSize(22); mPaint.setColor(Color.WHITE); mPaint.setTypeface(Typeface.SERIF); // 高亮部分 当前歌词...* * @return currentDunringTime 歌词只需的时间 */ public long updateIndex(long time) { // 歌词序号 index =...就是取出歌词的index,和该行歌词持续的时间进行sleep。
1.PNG 2.PNG 主要代码如下: //后台播放音频设置,需要在Capabilities->Background Modes中勾选Audio,Airplay,and Picture in Picture...[self showLockScreenTotaltime:totalSeconds andCurrentTime:playSeconds]; //锁屏控制音乐播放事件的通知...addSubview:self.lockScreenTableView]; _lrcImageView.image = _songImage.image; //获取添加了歌词数据的背景图...MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songDict]; } demo和最新相关知识可以去我的这篇文章里查看: iOS 音乐播放器之锁屏效果...+歌词解析
网上android播放器虽然挺多,感觉提供的歌词显示功能比较死板,要么搜索给的条件死死的,要么放置sdcard内部的歌词格式需要统一,应该提供类似文件夹浏览的功能。...^_^,不过在这之前先搞定歌词的现实界面: 播放器的歌词界面实现以下几个功能 根据歌曲的播放进度自下而上滚动; 提供上下拖动调整歌曲进度的功能; 突出显示当前进度的歌词段,并保证该歌词段处于布局中心...这个过程模拟了歌词的显示过程 接下来的SampleView继承了TextView并重载了onDraw方法.注意,这里只给了个sample,里面歌词怎么生成的见YOYOPlayer。
本文实例为大家分享了SurfaceView播放视频发送弹幕,并实现滚动歌词,供大家参考,具体内容如下 SurfaceView使用步骤 使用SurfaceView的步骤: 首先要继承SurfaceView...holder, int format, int width, int height)改变时 surfaceDestroyed(SurfaceHolder holder)销毁时 SurfaceView播放视频并可以发送弹幕...需要准备两个SurfaceView,一个是负责播放视频,一个负责展示弹幕。...要准备一个装有时间和歌词的集合,准备一个Timer计时器和一个该展示第几个歌词。...每隔一秒去拿该歌词的下一个歌词时间与进度匹配,如果进度 =该时间,那么就画该歌词在SurfaceView上;<则不画该歌词 一定要写SD卡读写权限!!!!!
java写一个音乐播放程序,同时显示歌词 总的来说分为两部分:1.音乐播放 2.显示歌词(这里介绍一个好理解的算法,就不进行优化了) 一、音乐播放(这里我们在网上先下载一个wav文件来播放) 这里我们使用...首先,我们需要知道JDK原生只支持音频格式为*.wav *.au *.aiff 的音乐 如果我们不希望使用JDK原生支持,就需要自己使用jar包(下面代码我是使用JDK原生支持的播放器来写的) 注意一下我的两个资源...,一个是邓紫棋泡沫的歌曲.wav,一个是邓紫棋画的歌.lrc(因为实在没找到邓紫棋画的wav文件就先对付上了…) // JDK自带音乐播放无需导包 public static void MusicPlayer...FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 二、显示歌词...(这里我们先解析已有的lrc歌词文件,存放到data里面再进行操作) public class Demo1 { // 定义两个存放分钟和秒的数组 private static double[] d1
效果如下: 由于编辑器限制,请移步钻芒博客查看:https://www.zuanmang.net/4787.html 截图: 图片 图片 样式根据自己需求修改 项目说明 想给关于页面加个音乐播放控件,加完看着又想加个歌词滚动...,嗯..想在的效果和预想的一模一样。...(一体性挺强) 文件名: js+jquery实现网页播放音乐歌词高亮自动滚动WordPress钻芒简洁美化版 文件功能描述:js+jquery实现网页播放音乐歌词高亮自动滚动 author:ZMKI修改...-- /*---------------------------------------------------------------- // 文件名: js+jquery实现网页播放音乐歌词高亮自动滚动...WordPress钻芒简洁美化版 // 文件功能描述:js+jquery实现网页播放音乐歌词高亮自动滚动 // author:ZMKI修改 原作csdn:_冷月心 // 时间:2019年8月21日20:
本文实例为大家分享了Android实现播放效果的具体代码,供大家参考,具体内容如下 一、首先看效果 ?...二、实现原理 使用贝塞尔曲线实现滑动效果,在使用属性动画实现水波纹效果,然后就能实现以上效果 三、实现 1、先封装动画框架,创建动画基础类 PathPoint.java public class PathPoint...mFab; fab.setImageDrawable(new BitmapDrawable()); //看布局里边的FabContainer要比toolbar背景高mFabSize/2(为了最初的半个fab效果
JavaScript 动画框架 框架封装 ---- 相信大家在很多门户网站上都可以看到动画的交互效果,通过这些动画生动地体现了我们在网页上的交互效果,现在我们就来学习一下这些动画效果的分解动作吧。...动画的实现思路都是通过连续改变物体的属性值来实现效果的。一般来说都是改变一个物体的left,right,width,height,opacity....li> 四.链式动画 首先把上面的简单运动框架抽取出来然后加上透明度的变化,放进一个人通用的JS文件里movement.js...filter: alpha(opacity:30); opacity: 0.3; } <script src="move.<em>js</em>...JSON的格式: {键:值,键:值} 完善后的运动框架<em>js</em>:movement.<em>js</em> function getStyle(obj,attr) { if(obj.currentStyle){
iOS音频播放器锁屏歌词显示与性能优化 一、引言 前边有博客探讨了有关iOS开发中音频播放的技术与进行后台音频播放并在后台与用户进行交互的方法,本篇将探讨一种在锁屏界面同步显示歌词歌词的方法,...二、在锁屏界面同步显示歌词 我们知道,在音频后台播放时,锁屏界面的信息是由MPNowPlayingInfoCenter来设置的,其中的歌曲信息字典可以设置类似歌曲封面,艺术家,歌曲名,歌曲时间等。...下面代码是根据解析好的LRC歌词数据进行图片合成的示例代码: //这个方法通过传入的LRC歌词数据进行图片的合成 array参数为每行lrc歌词数据集合 index为当前需要播放的lrc歌词行数 -(void...UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); _lrcImage = [img copy]; } 锁屏歌词的显示效果如下...: 同步显示锁屏歌词的音乐播放器:https://github.com/ZYHshao/MyPlayer。
1.思路和效果图 先说一下大体思路: json解析出来的lyrics歌词(字符串形式:[00:18.26]毕竟我们深爱过\r\n[00:21.74]有你陪的日子里)中每句和每句之间有\n,所以我们利用这个换行符标识来分割字符串...,放在list中,这样,我们得到的每一个字符串都是时间戳+歌词的形式,接下来,我们再继续解析单个字符串,用Qmap来保存,时间作为键值,歌词作为值,这样就构成了时间对应歌词的形式...,label_21匹配当前时间显示的歌词,并且把该歌词前面的歌词和后面的歌词分别发送给其他对应的标签。...这样就实现了动态效果。...4.总结 虽然代码很少,但是完成这个还是用了很长时间实现,反复修改,反复崩溃,没实现前,觉得这个功能,要是能实现多好,实现了后又觉得自己写的太简单了,而且效果有一点僵硬,并没有人家QQ 酷狗啊什么,歌词是慢慢往上滑
实现效果 实现分析 解析歌词字符串转化为对象 var lyrics = `[00:00.000]漂洋过海来看你-孙露 [00:09.480]词:李宗盛 [00:18.960]曲:李宗盛 [00:28.440...根据歌词对象和播放器当前播放时间计算当前播放到的歌词 function subscript() { let curTime = doms.audio.currentTime; for...curTime ,通过遍历歌词对象数组,比较时间来确定当前播放到的歌词索引。...根据当前播放到的歌词计算出 ul 向上偏移的位置以及当前高亮歌词 function setOffset() { let index = subscript(); let offset =...setOffset 函数根据当前播放的歌词索引计算 ul 的偏移量,确保当前歌词在容器中显示合适,并设置当前高亮的歌词行。
一、setTimeout VS. requestAnimationFrame 传统js动画实现一般使用setTimeout/setInterval等定时方式执行一个动画更新操作,但这种方式在使用中存在一些问题...另外,各个显示器的刷新频率不同,也使得一套代码无法自适应不同频率,难以对动画效果最优化。...就是10ms;如果是16.7ms,则interval自动是16.7ms 浏览器优化动画绘制 浏览器可以合并requestAnimationFrame的动画操作、CSS动画、CSS变换等各种动画效果到一次渲染周期中完成
此案例实现的是侧边栏的滑入与滑出,主要用定时器来实现物体滑动时速度的控制,从而实现滑入滑出效果,下面是效果图: 下面是实现的js代码: window.onload=function()
领取专属 10元无门槛券
手把手带您无忧上云