亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Flutter 實(shí)現(xiàn)網(wǎng)易云音樂字幕的代碼

 更新時間:2020年04月15日 08:43:04   作者:老孟程序員  
這篇文章主要介紹了Flutter 實(shí)現(xiàn)網(wǎng)易云音樂字幕的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

沒有接觸過音樂字幕方面知識的話,會對字幕的實(shí)現(xiàn)比較迷茫,什么時候轉(zhuǎn)到下一句?看了這篇文章,你就會明白字幕so easy。

先來一張效果圖:

字幕格式

目前市面上有很多種字幕格式,比如srt, ssa, ass(文本形式)和idx+sub(圖形格式),但不管哪一種格式都會包含2個屬性:時間戳和字幕內(nèi)容,格式如下:

00:00 歌詞:
00:25 我要穿越這片沙漠
00:28 找尋真的自我
00:30 身邊只有一匹駱駝陪我
00:34 這片風(fēng)兒吹過
00:36 那片云兒飄過

上面字幕的意思是:在25秒的時候跳轉(zhuǎn)到下一句,在28秒的時候跳轉(zhuǎn)到下一句...

字幕實(shí)現(xiàn)

了解了字幕文件的形式,字幕實(shí)現(xiàn)起來就比較簡單了,使用ListWheelScrollView控件,然后通過ScrollController在合適的時機(jī)進(jìn)行滾動,使當(dāng)前字幕始終保持在屏幕中間。

解析字幕文件,獲取字幕數(shù)據(jù):

loadData() async {
 var jsonStr =
 await DefaultAssetBundle.of(context).loadString('assets/subtitle.txt');
 var list = jsonStr.split(RegExp('\n'));
 list.forEach((f) {
 if (f.isNotEmpty) {
 var r = f.split(RegExp(' '));
 if (r.length >= 2) {
 _subtitleList.add(SubtitleEntry(r[0], r[1]));
 }
 }
 });
 setState(() {});
}

設(shè)置字幕控件及背景圖片:

@override
Widget build(BuildContext context) {
 return Scaffold(
 appBar: AppBar(
 title: Text('彈幕'),
 ),
 body: Stack(
 children: <Widget>[
 Positioned.fill(
  child: Image.asset(
  'assets/imgs/background.png',
  fit: BoxFit.cover,
 )),
 Positioned.fill(
  child: Subtitle(
  _subtitleList,
  selectedTextStyle: TextStyle(color: Colors.white,fontSize: 18),
  unSelectedTextStyle: TextStyle(
  color: Colors.black.withOpacity(.6),
  ),
  diameterRatio: 5,
  itemExtent: 45,
 ))
 ],
 ),
 );
}

字幕控件的構(gòu)建:

@override
Widget build(BuildContext context) {
 if (widget.data == null || widget.data.length == 0) {
 return Container();
 }
 return ListWheelScrollView.useDelegate(
 controller: _controller,
 diameterRatio: widget.diameterRatio,
 itemExtent: widget.itemExtent,
 childDelegate: ListWheelChildBuilderDelegate(
 builder: (context, index) {
  return Container(
  alignment: Alignment.center,
  child: Text(
  '${widget.data[index].content}',
  style: _currentIndex == index
   ? widget.selectedTextStyle
   : widget.unSelectedTextStyle,
  ),
  );
 },
 childCount: widget.data.length),
 );
}

字幕控件封裝了選中字體和未選中字體樣式參數(shù),用法如下:

Subtitle(
	_subtitleList,
	selectedTextStyle: TextStyle(color: Colors.white,fontSize: 18),
	unSelectedTextStyle: TextStyle(
 	color: Colors.black.withOpacity(.6),
	)
)

效果如下:

設(shè)置圓筒直徑和主軸渲染窗口的尺寸的比,默認(rèn)值是2,越小表示圓筒越圓

Subtitle(
	_subtitleList,
	diameterRatio: 5,
)

下面是1和5的對比:

Github地址:https://github.com/781238222/flutter-do/tree/master/flutter_subtitle_example

交流

Github地址:https://github.com/781238222/flutter-do

170+組件詳細(xì)用法:http://laomengit.com

總結(jié)

到此這篇關(guān)于Flutter 實(shí)現(xiàn)網(wǎng)易云音樂字幕的文章就介紹到這了,更多相關(guān)Flutter 實(shí)現(xiàn)網(wǎng)易云音樂字幕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android應(yīng)用中繪制圓形頭像的方法解析

    Android應(yīng)用中繪制圓形頭像的方法解析

    這篇文章主要介紹了Android應(yīng)用中繪制圓形頭像的方法解析,文后還順帶介紹了Android App常用圖標(biāo)尺寸規(guī)范,需要的朋友可以參考下
    2016-02-02
  • 基于android中權(quán)限的集合匯總

    基于android中權(quán)限的集合匯總

    本篇文章把a(bǔ)ndroid中的權(quán)限進(jìn)行了集合匯總。需要的朋友參考下
    2013-05-05
  • Android使用Retrofit上傳文件功能

    Android使用Retrofit上傳文件功能

    這篇文章主要為大家詳細(xì)介紹了Android使用Retrofit上傳文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Android?MaterialButton使用實(shí)例詳解(告別shape、selector)

    Android?MaterialButton使用實(shí)例詳解(告別shape、selector)

    我們平時寫布局,當(dāng)遇到按鈕需要圓角、或者描邊等,通常的方法是新建一個xml文件,在shape標(biāo)簽下寫,然后通過android:background或setBackground(drawable)設(shè)置,這篇文章主要給大家介紹了關(guān)于Android?MaterialButton使用詳解的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Android模擬器中安裝apk的方法

    Android模擬器中安裝apk的方法

    這篇文章主要介紹了Android模擬器中安裝apk的方法,結(jié)合圖文描述講解了Android的模擬器中實(shí)現(xiàn)安裝apk的具體步驟,簡單實(shí)用,需要的朋友可以參考下
    2015-12-12
  • Android開發(fā)之Picasso通過URL獲取用戶頭像的圓形顯示

    Android開發(fā)之Picasso通過URL獲取用戶頭像的圓形顯示

    這篇文章主要介紹了android開發(fā)之Picasso通過URL獲取用戶頭像的圓形顯示,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-06-06
  • Android自定義View實(shí)現(xiàn)投票進(jìn)度條

    Android自定義View實(shí)現(xiàn)投票進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)投票進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android 自定義view實(shí)現(xiàn)水波紋動畫效果

    Android 自定義view實(shí)現(xiàn)水波紋動畫效果

    這篇文章主要介紹了 Android 自定義view實(shí)現(xiàn)水波紋動畫效果的實(shí)例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-01-01
  • Android10 啟動Zygote源碼解析

    Android10 啟動Zygote源碼解析

    這篇文章主要為大家介紹了Android 10 啟動分析之Zygote篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 在Unity中捕捉Android的常用按鈕返回事件

    在Unity中捕捉Android的常用按鈕返回事件

    在Unity開發(fā)中捕捉Android的常用事件其實(shí)很簡單,下面通過實(shí)例代碼給大家詳細(xì)介紹下,感興趣的朋友一起看看吧
    2016-12-12

最新評論