歌词显示方法及装置的制作方法

文档序号:6771583阅读:139来源:国知局

专利名称::歌词显示方法及装置的制作方法
技术领域
:本发明涉及文本显示技术,尤其涉及一种歌词显示方法及装置。
背景技术
:目前,很多音乐播放器播放歌曲时,采用逐行显示歌词的方式,例如,当歌曲播放到某一行歌词时,将该行歌词整体高亮显示,这样用户就可以跟唱当前行的歌词。对于这种歌词显示方式,由于是整行歌词高亮显示,用户需要在熟悉整行歌词的节奏的情况下才能很好地跟唱完一行歌词。如果用户对于一行歌词中的某一些字或单词的节奏不熟悉,则无法很好地跟唱。可见,提供一种能够逐字显示歌词的歌词显示方法是现有技术中亟待解决的问题。
发明内容本发明针对现有技术中存在的问题,提供一种歌词显示方法及装置,能够实现歌词的逐字显示。本发明提供了一种歌词显示方法,包括确定当前播放行;确定动态显示区域在静态显示区域的当前播放行区域中的起始位置,其中,所述静态显示区域中滚动显示有一行或多行歌词;依照当前播放行的字符单元的排列顺序,从所述起始位置开始,在所述动态显示区域依次显示当前播放行的各个字符单元对应的动画。本发明还提供了一种歌词显示装置,包括第一确定模块,用于确定当前播放行;第二确定模块,用于确定动态显示区域在静态显示区域的当前播放行区域中的起始位置,其中,所述静态显示区域中滚动显示有一行或多行歌词;处理模块,分别与所述第一确定模块和第二确定模块连接,用于依照所述第一确定模块确定的当前播放行的字符单元的排列顺序,从所述第二确定模块确定的起始位置开始,在所述动态显示区域依次显示当前播放行的各个字符单元对应的动画。本发明实施例提供的方法及装置中,分别设置了静态显示区域和动态显示区域,在静态显示区域滚动显示一行或多行歌词的同时,在动态显示区域依次显示当前播放行的各个字符单元对应的动画。动态显示区域的位置是位于静态显示区域的当前播放行区域中,这样,对于当前播放行,在动态显示区域中会同步显示动画,动画分别与当前播放行的各个字符单元对应,实现了准确的歌词逐字显示。通过以下参照附图对优选实施例的说明,本申请的上述以及其它目的、特征和优点将更加明显。图1示例性示出本发明歌词显示方法实施例一的流程图;图2示例性示出本发明歌词显示方法实施例二的流程图;图3示例性示出单个字符单元的动画显示效果的一个示意图;图4示例性示出单个字符单元的动画显示效果的另一个示意图;图5示例性示出静态显示区域中歌词滚动了一行的显示效果的示意图;图6示例性示出本发明实施例中预先获取歌词数据的一个示例的流程图;图7示例性示出本发明实施例中预先获取歌词数据的另一个例子的流程图;图8-图10分别示出了字体大小和静态显示区域宽度不同时,同一行歌词字符串经过解析后的显示效果图;图11和图12分别示出当前播放行区域位于静态显示区域第1行和第3行的显示效果图;图13示例性示出本发明歌词显示装置实施例一的结构示意图。具体实施例方式图1示例性示出本发明歌词显示方法实施例一的流程图,包括步骤101、确定当前播放行。本发明的实施例中,可以预先获取多行歌词数据,每行歌词数据包括该行歌词的起始时间、结束时间、歌词内容和歌词内容中每个字符单元的时间值。其中,每个字符单元的时间值指的是每个字符单元对应的播放时间长度。歌词内容包括一个或多个字符单元。本发明实施例中,字符单元可以是一个中文字或者一个英文单词。如下为一行中文歌词数据的例子‘000:27.16','000:28.87','让我怎么说','180,260,260,480,530‘。在上述的这行歌词数据中,起始时间是“000:27.16”,结束时间是“000:28.87”,歌词内容是“让我怎么说”,歌词内容包括“让”、“我”、“怎”、“么”、“说”这五个字符单元,每个字符单元对应的时间值分别是180毫秒、260毫秒、260毫秒、480毫秒和530毫秒。在本发明的实施例中,以字符单元的播放时间长度的单位是毫秒为例来说明。步骤101中,具体可以预先设置时间间隔和当前播放行,以预设时间间隔读取当前播放时间,在当前播放时间大于或等于预设播放行的起始时间时,确定预设播放行为当前播放行。步骤102、确定动态显示区域在静态显示区域的当前播放行区域中的起始位置,其中,静态显示区域中滚动显示有一行或多行歌词。当前播放行区域是静态显示区域中用于显示当前播放行的区域。步骤103、依照当前播放行的字符单元的排列顺序,从起始位置开始,在动态显示区域依次显示当前播放行的各个字符单元对应的动画。本发明实施例一提供的方法中,分别设置了静态显示区域和动态显示区域,在静态显示区域滚动显示一行或多行歌词的同时,在动态显示区域依次显示当前播放行的各个字符单元对应的动画。动态显示区域的位置是位于静态显示区域的当前播放行区域中,这样,对于当前播放行,在动态显示区域中会同步显示动画,动画分别与当前播放行的各个字符单元对应,实现了准确的歌词逐字显示。在实施例一提供的方法中,在步骤102之后,步骤103之前,还可以包括从预先获取的歌词数据中提取出当前播放行的每个字符单元以及当前播放行中每个字符单元的时间值;计算每个字符单元的宽度。根据本发明的一个实施例,步骤103中,各个字符单元对应的动画为将动态显示区域延长一个宽度等于各个字符单元的宽度从而使得动态显示区域中的字符单元逐渐显示出来的动画,各个字符单元对应的动画的执行时间等于各个字符单元的时间值。其中,动态显示区域显示的字符单元的字体颜色与静态显示区域显示的字体颜色可以不同。动态显示区域采用的歌词数据与静态显示区域采用的歌词数据可以相同,这样,可以使得动态显示区域和静态显示区域显示字符单元的字体、字体大小和字符间距相同,达到比较好的显示效果。预设的静态显示区域的字体、字体大小以及歌词内容的对齐方式可以分别与预设的动态显示区域的字体、字体大小以及歌词内容的对齐方式相同。静态显示区域的背景色与动态显示区域的背景色可以相同,优选地,静态显示区域的背景色和动态显示区域的背景色都可以是透明的。静态显示区域的显示与动态显示区域的显示可以分别独立进行。根据本发明的一个实施例,动态显示区域和静态显示区域可以分别通过一个用于显示文本视图的控件来实现。例如,可以采用Apple公司的UILabel控件。在本发明的实施例中,为了实现歌词的逐字显示,创建了两个显示区域,一个是静态显示区域,一个是动态显示区域,静态显示区域是指显示区域的面积不会变化的区域,动态显示区域是指显示区域的面积会随着当前播放的字符单元的时间值的累加而变化的区域,动态显示区域的面积小于或者等于静态显示区域的面积。如果动态显示区域的面积等于静态显示区域的面积,则动态显示区域与静态显示区域可以重叠。如果动态显示区域的面积小于静态显示区域,则动态显示区域可位于静态显示区域中。在静态显示区域中可以滚动显示一行或多行歌词,动态显示区域则是针对当前播放行的显示区域。动态显示区域的宽度是变化的,从当前播放行的第一个字符单元开始逐个字符单元地延伸到最后一个字符单元,从而形成类似于“拉开窗帘”效果。动态显示区域的高度可以是变化的,也可以是固定的。例如,在当前播放行的歌词的行高是固定的情况下,动态显示区域的高度也是固定的。根据一个实施例,动态显示区域可以是长条形,动态显示区域的高度可以等于静态显示区域的行高。可以根据预设的静态显示区域的歌词内容的对齐方式、当前播放行的歌词内容的宽度P、静态显示区域的宽度Q以及静态显示区域中当前播放行区域的起始位置确定动态显示区域在静态显示区域的当前播放行区域中的起始位置的坐标(χ,y),其中χ和y分别是动态显示区域的左上角顶点在静态显示区域中的横坐标和纵坐标。静态显示区域中当前播放行区域的起始位置可以是指当前播放行区域的左上角顶点在静态显示区域中的坐标。例如,如果预设的静态显示区域的歌词内容的对齐方式是左对齐,静态显示区域中当前播放行区域的起始位置的纵坐标是M,则动态显示区域在静态显示区域中的起始位置的坐标(x,y)为(0,M);如果预设的静态显示区域的歌词内容的对齐方式是居中,则动态显示区域在静态显示区域中的起始位置的坐标(X,y)为GQ-P)/2,M);如果预设的静态显示区域的歌词内容的对齐方式是右对齐,则动态显示区域在静态显示区域中的起始位置的坐标(X,y)为GQ_P),M)。上述确定的动态显示区域在静态显示区域中的起始位置的坐标(x,y)均位于当前播放行区域中。在本申请的实施例中,字符单元的宽度包括字符单元自身的字体宽度以及分配给每个字符单元的间距。根据一个实施例,例如两个字之间的间距为1mm,则分别分配给这两个字的字符间距可均为1/2=0.5mm。具体而言,有的歌词既包括中文字,又包括英文单词。如果字符单元是中文字,则可以根据预设的静态显示区域的字体大小确定字符单元的宽度。如果字符单元是英文单词,则可以根据预设的静态显示区域的字体大小以及该字符单元包括的英文字母的个数确定字符单元的宽度。例如,如果一个英文单词包括6个字母,则可以获得字符单元的宽度为(每个字母的宽度*6+字符单元的间距)。在步骤103中,以前述一行中文歌词为例,分别为字符单元“让”、“我”、“怎”、“么”、“说”设置动画1、动画2、动画3、动画4和动画5,动画1、动画2、动画3、动画4和动画5的执行时间分别与各个字符单元的时间值相匹配,这五个动画的延长宽度分别是这五个字符单元的宽度。依照字符单元的排列顺序,从动态显示区域的起始位置开始,例如从静态区域中位置(0,0)开始,在动态显示区域依次显示各个字符单元对应的动画。具体地,当动态显示区域延长时,动态显示区域中的字符单元逐渐显示出来。由于动态显示区域和静态显示区域的字体颜色不同,所以动态显示区域已显示出的字符单元的字体颜色与静态显示区域中没有被动态显示区域覆盖的字符单元的字体颜色不同。而动态显示区域的延长的速度为每个字符单元的宽度除以每个字符单元的时间值,使得动态显示区域的延长速度与字符单元的播放速度相同,这样,一行歌词中的各个字符单元就能够通过各个动画来标识,从而实现逐字显示。图2示例性示出本发明歌词显示方法实施例二的流程图。在实施例二中,主要运用了Apple公司提供的iOS(iPhoneOperationSystem,简称iOS)操作系统中的部分控件。在实施例二中,可以通过使用Apple公司的UITableView控件来填充数据源,即,当滚动控件时动态加载屏幕所显示的歌词行,还可以通过定义UITableView控件中的tableCell来自定义数据显示样式,设置显示高度和背景色等。通过这样的设置,本发明能够实现平滑滚动,性能好,速度快。在实施例二的方法中,首先通过初始化方法设置静态显示区域的大小和位置,具体地,可以创建一个相同位置和大小的UITableView加入到视图中,设置用于填充数据源的代理。具体设置方式如下LrcViewContro11er*Ircνiew=[[LrcViewalloc]inintWithFrame:CGRectMake(0,0,320,400)];设置UITableView的背景色就是设置整个歌词显示视图的背景色,可以通过代理方法设置tableCell的行高。歌词显示视图可以包括静态显示区域和动态显示区域。创建的tableCell里面可以包括两个UILabel,一个UILabel用于创建静态显示区域,另一个UILabel用于创建动态显示区域,可以通过设置这两个UILabel的背景色来设置静态显示区域和动态显示区域的背景色。用于静态显示区域的UILabel的位置和尺寸可以是静态显示区域的位置和尺寸。用于动态显示区域的UILabel的起始位置就是动态显示区域的起始位置,初始尺寸可以是宽为1个像素,高为一行歌词的行高。预先获取的歌词数据作为这两个UILabel的文本值。实施例二的方法包括步骤201、初始化当前播放行ROW,将第0行设置为当前播放行,ROW=0。步骤202、以预设时间间隔(例如,0.0)读取当前播放时间,判断当前播放时间是否大于或等于预设的当前播放行ROW的起始时间。如果当前播放时间大于或等于预设的当前播放行ROW的起始时间,则执行步骤203;如果当前播放时间小于预设的当前播放行ROff的起始时间,则跳出循环,等待下一次时间间隔到来,继续读取当前播放时间。步骤203、根据预设的静态显示区域的歌词内容的对齐方式、当前播放行的歌词内容的宽度、静态显示区域的宽度以及静态显示区域中当前播放行区域的起始位置确定动态显示区域在静态显示区域中的起始位置。例如,预设的歌词内容的对齐方式为左对齐,静态显示区域中当前播放行区域的起始位置的纵坐标为0,在步骤203中确定的动态显示区域的起始位置为(0,0)o步骤204、提取出第ROW行的每个字符单元以及第ROW行中每个字符单元的时间值,并将当前索引Y设置为0,即Y=0。在步骤204中,如果没有字符单元,即歌词内容为空,则可以跳出循环,等待下一次时间间隔到来,继续读取当前播放时间。如果字符单元是中文字,则将一个中文字作为一个字符单元放到数组中。如果字符单元是英文单词,则将英文的字母组合作为一个整体放到数组中,时间值以逗号作为分割符号进行分割。可以分别为每一个字符单元和时间值组成的数据对设置一个索引。各个字符单元对应的索引的顺序与各个字符单元的排列顺序一致。如表一所示为提取出的字符单元、时间值和索引的一个例子。表一、提取出的字符单元、时间值和索引的一个例子权利要求1.一种歌词显示方法,包括确定当前播放行;确定动态显示区域在静态显示区域的当前播放行区域中的起始位置,其中,所述静态显示区域中滚动显示有一行或多行歌词;依照当前播放行的字符单元的排列顺序,从所述起始位置开始,在所述动态显示区域依次显示当前播放行的各个字符单元对应的动画。2.根据权利要求1所述的方法,在动态显示区域依次显示当前播放行的各个字符单元对应的动画之前,还包括从预先获取的歌词数据中提取出当前播放行的每个字符单元以及当前播放行中每个字符单元的时间值;计算每个字符单元的宽度;所述各个字符单元对应的动画为将所述动态显示区域延长一个宽度等于各个字符单元的宽度从而使得所述动态显示区域中的字符单元逐渐显示出来的动画,各个字符单元对应的动画的执行时间等于各个字符单元的时间值。3.根据权利要求2所述的方法,其中,所述动态显示区域显示的字符单元的字体颜色与所述静态显示区域显示的字体颜色不同。4.根据权利要求3所述的方法,其中,所述动态显示区域采用的歌词数据与所述静态显示区域采用的歌词数据相同。5.根据权利要求2所述的方法,其中,预设的静态显示区域的字体、字体大小以及歌词内容的对齐方式分别与预设的动态显示区域的字体、字体大小以及歌词内容的对齐方式相同,并且所述静态显示区域的背景色与所述动态显示区域的背景色相同。6.根据权利要求1-5中任一权利要求所述的方法,其中,所述静态显示区域的显示与所述动态显示区域的显示分别独立进行。7.根据权利要求1-5中任一权利要求所述的方法,其中,所述动态显示区域和静态显示区域分别通过一个用于显示文本视图的控件来实现。8.根据权利要求1-5中任一权利要求所述的方法,所述确定动态显示区域在静态显示区域的当前播放行区域中的起始位置包括根据预设的静态显示区域的歌词内容的对齐方式、当前播放行的歌词内容的宽度、静态显示区域的宽度以及静态显示区域中当前播放行区域的起始位置确定所述动态显示区域在所述静态显示区域的当前播放行区域中的起始位置。9.根据权利要求1-5中任一权利要求所述的方法,在确定当前播放行之前,还包括根据预设的静态显示区域和动态显示区域的字体、字体大小以及歌词内容的对齐方式,将初始歌词字符串进行解析,获得歌词数据,使得解析后的歌词数据与所述预设的静态显示区域和动态显示区域的字体、字体大小以及歌词内容的对齐方式相匹配。10.一种歌词显示装置,包括第一确定模块,用于确定当前播放行;第二确定模块,用于确定动态显示区域在静态显示区域的当前播放行区域中的起始位置,其中,所述静态显示区域中滚动显示有一行或多行歌词;处理模块,分别与所述第一确定模块和第二确定模块连接,用于依照所述第一确定模块确定的当前播放行的字符单元的排列顺序,从所述第二确定模块确定的起始位置开始,在所述动态显示区域依次显示当前播放行的各个字符单元对应的动画。全文摘要本发明提供一种歌词显示方法及装置,其中方法包括确定当前播放行;确定动态显示区域在静态显示区域的当前播放行区域中的起始位置,其中,所述静态显示区域中滚动显示有一行或多行歌词;依照当前播放行的字符单元的排列顺序,从所述起始位置开始,在所述动态显示区域依次显示当前播放行的各个字符单元对应的动画。本发明提供的方法及装置中,每个字符单元的动画的执行速度反映了歌词的节奏,便于用户跟唱,实现了准确的歌词逐字显示。文档编号G11B27/10GK102148048SQ20111012224公开日2011年8月10日申请日期2011年5月12日优先权日2011年5月12日发明者巩红霞申请人:北京瑞信在线系统技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1