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 = builder
onPlayStart
后初始化Lyric:com.tme.ktv.lyric.widget.LyricView#setLyricUpdateTime(64)
LyricInitializer().setLyricView(null)
LyricInitializer → LyricController → LyricView → LyricLayout → LyricLineUi
LyricTimeLine.getLyricTime() → LyricLayout.onUpdateTime() → LyricLineUi.draw()
LyricParam → TextPaint → LyricLineUi.draw()