【Music】横屏歌词显示效果不好

全屏时下拉的时候,歌词变成第一排,上划时,歌词编程显示的下一排

歌词在播放的主界面中有显示
播放界面是MediaPlaybackActivity
这个类实现了LRC.PositionProvider接口

查看activity的相关布局文件【Music】横屏歌词显示效果不好_第1张图片
在这个布局中显示歌词部分
整个linearlayout的visibility为gone属性,歌词由自定义的view 继承ListView生成一个LyricListView来装载,TextView中显示当没有歌词信息的时候所需要显示的提示文字。

关于歌词部分的包 【Music】横屏歌词显示效果不好_第2张图片,前两个文件夹是桌面组件,text文件夹中MovementMethod提供对组件控制行为的接口
Widget文件夹中,MusicIntent提供一些静态常量字符串,TextView作为自定义View继承自View,展示并提供给用户可以编辑的text。

LRC.java 歌词对象。其中包含的变量有一些基本信息,歌曲名,歌手名,专辑名,当前播放行的歌词的索引值,当前显示的最后一行歌词的索引值。等等
【Music】横屏歌词显示效果不好_第3张图片
Offset对象用于存储偏移量时间和对歌词的指针
两个成员变量time是播放时间,lrcInd是歌词的行数
Offset重写了equals方法,判断播放时间一致时,两个Offset对象相等。

PositionProvider接口,提供获取时间和位置的方法。

LRC重写的toString方法
【Music】横屏歌词显示效果不好_第4张图片
返回的字符串的格式为先输出基本信息,然后每行输出时间与歌词内容。

LRCFormatException.java
继承RuntimeException ,提供了不同参数的构造方法。

LRCParser.java
作为歌词的解析器
提供从文件解析歌词的方法 parseFromFile().
1.在解析歌词的方法下首先运行isValidLRCFile()方法。判断路径下的文件是否是合法LRC歌词文件,具体判断方式为文件路径是否为空,文件是否存在,是否可读,是否正确的格式。
2.判断文件是否valid之后,使用io流读入内存
3.destFile的file文件作为最后的文件,将目标路径的歌词文件进行toUtf()方法改变文件的编码格式,具体格式LyricConstants.TEXT_UTF_ENCODING为已定义的常量,返回的文件由destFile保存。最后由一个参数的parseFromFile().方法返回LRC对象。

LyricConstants.java
存储常量

StringConstant.java
存储一些字符串常量

LyricDataBean.java
存储歌词信息的个体,包括歌手,歌名,歌词内容,歌词播放状态
带有获取文件名,判断存储空间,保存歌词的方法。

LyricListView extends ListView implements OnItemLongClickListener
作为显示歌词的ListView,实现长点击监听,本来是实现歌词时间的调整,全部被注释掉。
主要在LyricsAdapter extends BaseAdapter 中设置歌词的显示方式。
【Music】横屏歌词显示效果不好_第5张图片
在触摸事件中实现歌词的滑动。
removeLycScroll();当手指按下时,歌词停止滚动、
【Music】横屏歌词显示效果不好_第6张图片
lyricHandler会处理手指抬起时候的方法,msg.what = LyricConstants.LYRIC_SCROLL.
抬起手指时做的是界面滚回当前播放行的行为。

在MediaPlaybackActivity中,mList作为歌词的载体存在。
【Music】横屏歌词显示效果不好_第7张图片
通过判断歌词文件是否存在选择是否显示LyricListView控件。
当选择不显示歌词时会显示其他信息。通过boolean类型的visiable决定。
【Music】横屏歌词显示效果不好_第8张图片
由LyricIcon设置的监听事件,用icon来选择是否显示完整的歌词。
【Music】横屏歌词显示效果不好_第9张图片
LyricListView的start方法开始

在playLrc之前需要先setLrc,将boolean类型的ready设置为true。

对歌词显示的更新,通过判断下一首是否有歌词,在歌曲结束后设置歌词不同的显示类型。
【Music】横屏歌词显示效果不好_第10张图片

这个方法会在屏幕旋转时调用
【Music】横屏歌词显示效果不好_第11张图片

当下拉时,curLrc = mAdapter.getCount();
当上滑时,curLrc = curLrc = -1;
在lyricHandler中,
这里写图片描述
上划后,LYRIC_SEEK_DOWN
下拉后,LYRIC_SEEK_UP

LyricHandler中的处理,拖动歌词后的滑动取决于mAutoSeekOffset

在layoutChildren中修改mAutoSeekOffset的值就可以改变歌词滑动的位置

你可能感兴趣的:(android)