SongInfoObject.isMvHasLyric()不为true(即MV没有自带歌词),则可显示歌词View。onPlayStart后初始化Lyric:<com.tme.ktv.lyric.widget.LyricView
android:id="@+id/lyric_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:background="@android:color/transparent"
android:paddingLeft="20dp"
android:paddingRight="20dp"
app:layoutMode="ktv"
app:lineNumber="2"
app:lightTextColor="#F04F43"
app:lightUnselectTextColor="@android:color/white"
app:lightUnselectTextStrokeWidth="5"
app:lightUnselectTextStrokeColor="@android:color/black"
app:textStrokeWidth="5"
app:textStrokeColor="@android:color/black"
app:strokeW="5"
app:strokeColor="@android:color/white"
app:lightTextSize="50dp"
app:lineMargin="5dp"
app:shadowColor="#5F000000"
app:shadowEnable="true"
app:textColor="@android:color/white"
app:textSize="50dp"
app:lightTextFont="@font/fangzheng_font"
app:lightUnselectTextFont="@font/fangzheng_font"
app:textFont="@font/fangzheng_font" />lyricView: LyricView实例,用于显示歌词的视图组件qrcBytes: QRC格式歌词数据的字节数组,可为nulllrcBytes: LRC格式歌词数据的字节数组,可为nulltimeLine: LyricTimeLine接口实现,用于获取当前播放时间isShowLyric: 布尔值,true表示显示歌词,false表示隐藏mQrcBytes: QRC格式歌词数据mLrcBytes: LRC格式歌词数据mLyricView: 歌词显示视图mLyricTimeLine: 时间轴接口mIsShowLyric: 是否显示歌词标志lyricParam: 歌词样式参数isShow: 是否显示歌词lyricListener: 歌词监听器实现onPlayStart(): 播放开始时的处理onResume(): 恢复播放时恢复歌词显示onPause(): 暂停播放时暂停歌词显示mLyricUpdateTime: 歌词刷新间隔时间(16-200ms)mLayoutMode: 布局模式(KTV模式或多行模式)param: 歌词样式参数updateTime: 刷新间隔,单位毫秒,范围16-200qrcBytes: QRC歌词数据lrcBytes: LRC歌词数据timeLine: 时间轴接口mode: 显示模式,LyricParam.LAYOUT_MODE_KTV或LyricParam.LAYOUT_MODE_LINESlistener: 歌词监听器实现OnLyricTextUpdate(String text): 歌词文本更新回调OnLyricCountDown(int countDown): 歌词倒计时回调onAttachedToWindow(): 视图附加时启动刷新onDetachedFromWindow(): 视图分离时停止刷新textSize: 普通文本大小textColor: 普通文本颜色textFont: 普通文本字体lightTextSize: 高亮文本大小lightTextColor: 高亮文本颜色lightTextFont: 高亮文本字体lightUnSelectTextSize: 未选中高亮文本大小lightUnselectTextColor: 未选中高亮文本颜色mStrokeColor: 高亮文本描边颜色mStrokeWidth: 高亮文本描边宽度textStrokeColor: 普通文本描边颜色textStrokeWidth: 普通文本描边宽度lightUnselectTextStrokeColor: 未选中文本描边颜色lightUnselectTextStrokeWidth: 未选中文本描边宽度lineMargin: 行间距lineNumber: 显示行数retainNumber: 保留行数layoutMode: 布局模式LAYOUT_MODE_KTV = 1: KTV双行模式LAYOUT_MODE_LINES = 2: 多行滚动模式isShadow: 是否启用阴影shadowRadius: 阴影半径shadowDx: 阴影X轴偏移shadowDy: 阴影Y轴偏移shadowColor: 阴影颜色lyricBackgroundColor: 歌词背景颜色updateTime: 刷新间隔时间onPlayStart回调后设置 val builder = LyricParam.Builder()
.setIsShadow(true)
.setLayoutMode(LAYOUT_MODE_LINES)
.setLineNumber(3)
.setUpdateTime(60)
.setLightClipOffsetX(0)
.setLightTextColor(resources.getColor(R.color.colorForgiven))
.setTextColor(resources.getColor(R.color.red_orange))
.setTextSize(200)
.setLightUnselectTextStrokeWidth(30)
.setLightTextSize(150)
.setLineMargin(30)
.setStrokeWidth(30)
.setLyricBackgroundColor(resources.getColor(R.color.colorGray))
.setLightUnselectTextColor(resources.getColor(R.color.colorLightBlack))
.build()
LyricController.getInstance().lyricParam = builder| 属性名 | 说明 |
|---|---|
| lineMargin | 行间距 |
| lineRate | 行间距比率表示行间距与字体大小的比例 |
| retainNumber | line模式控制保留的歌词行数 |
| lineNumber | line模式歌词视图中要显示的歌词行数(如果是line模式 此值需要设置,否则就用默认值了) |
| textSize | 普通歌词文字的大小 |
| textColor | 普通歌词文字的颜色。 |
| textFont | 普通歌词文字使用的字体文件 |
| textStrokeWidth | 普通歌词的描边宽度 |
| textStrokeColor | 普通歌词的描边颜色 |
| lyricBackgroundColor | 歌词组件背景颜色 |
| lightTextSize | 唱歌时歌词选中部分文字的大小 |
| lightTextColor | 唱歌时歌词选中部分文字的颜色 |
| lightTextFont | 唱歌时歌词选中部分文字使用的字体文件 |
| lightTextColorUnSelect | 已过期 |
| lightUnselectTextColor | 唱歌时歌词已经被选中但是未被唱过部分的文字颜色 |
| lightUnselectTextFont | 唱歌时歌词已经被选中但是未被唱过部分文字使用的字体文件 |
| lightUnselectTextStrokeWidth | 唱歌时歌词已经被选中但是未被唱过文字的描边宽度 |
| lightUnselectTextStrokeColor | 唱歌时歌词已经被选中但是未被唱过部分文字描边的颜色。 |
| shadowEnable | 是否开启歌词文字的阴影效果 |
| shadowRadius | 歌词文字阴影的模糊半径 |
| shadowDx | 歌词文字阴影在 X 轴方向的偏移量 |
| shadowDy | 歌词文字阴影在 Y 轴方向的偏移量 |
| shadowColor | 歌词文字阴影的颜色 |
| strokeColor | 唱歌选中歌词时的歌词描边颜色 |
| strokeW | 唱歌选中歌词时的歌词描边宽度 |
| flushTime | 控制歌词刷新的时间间隔 |
| layoutMode | 设置歌词视图的布局模式(必须设置) |
| ktv | 为layoutMode中的ktv模式,即左右两行歌词 |
| line | 为layoutMode中的line模式,即竖形滚动歌词 |
val builder = LyricParam.Builder()
.setIsShadow(true)
.setLayoutMode(LAYOUT_MODE_LINES)
.setLineNumber(3)
.setUpdateTime(60)
.setLightClipOffsetX(0)
.setLightTextColor(resources.getColor(R.color.colorForgiven))
.setTextColor(resources.getColor(R.color.red_orange))
.setTextSize(200)
.setLightUnselectTextStrokeWidth(30)
.setLightTextSize(150)
.setLineMargin(30)
.setStrokeWidth(30)
.setLyricBackgroundColor(resources.getColor(R.color.colorGray))
.setLightUnselectTextColor(resources.getColor(R.color.colorLightBlack))
.build()
LyricController.getInstance().lyricParam = builderonPlayStart后初始化Lyric:com.tme.ktv.lyric.widget.LyricView#setLyricUpdateTime(64)LyricInitializer().setLyricView(null)LyricInitializer → LyricController → LyricView → LyricLayout → LyricLineUiLyricTimeLine.getLyricTime() → LyricLayout.onUpdateTime() → LyricLineUi.draw()LyricParam → TextPaint → LyricLineUi.draw()LyricInitializer.setLyricView(null)释放资源reset()清理资源,如LyricView.reset(); LyricLayout.reset()