/// <summary> /// _mediaTimelineController_PositionChanged 250ms间隔,无可避免歌词延迟 /// </summary> /// <param name="totalMilliseconds"></param> public async void ChangeLyricPosition(double totalMilliseconds) { if (lyricStrs == null || lyricStrs.Count == 0) { return; } int index = await Task.Run(() => SearchPerfectTime(totalMilliseconds)); if (index < 0) { return; } //下一句歌词距当前时间大于100ms先不显示 if (lyricStrs[index].DateTime.TimeOfDay.TotalMilliseconds - totalMilliseconds > 100) { return; } if (ListBox_lyric.Items.Count != 0) { int showItemCount = (int)(ListBox_lyric.ActualHeight / 50); ListBox_lyric.SelectedIndex = index; if (index < ListBox_lyric.Items.Count - showItemCount / 2) { ListBox_lyric.ScrollIntoView(lyricStrs[index + showItemCount / 2]); } if ((Application.Current as App).compactOverlayPage != null) { List <LyricStr> lsTemp = new List <LyricStr>(); //前一句 if (index == 0) { lsTemp.Add(new LyricStr()); } else { lsTemp.Add(lyricStrs[index - 1]); } //当前 lsTemp.Add(lyricStrs[index]); //后一句 if (index == lyricStrs.Count - 1) { lsTemp.Add(new LyricStr()); } else { lsTemp.Add(lyricStrs[index + 1]); } (Application.Current as App).compactOverlayPage.UpdateLayout_lyric(lsTemp); } } }
async void UpDateSong() { _albumRoot = PlayingService.PlayingAlbum; _songsItem = PlayingService.PlayingSong; Image_album.Source = PlayingService.PlayingAlbumBitmapImage; Button_albumName.Content = _albumRoot.album.name; string name = ""; for (int i = 0; i < _songsItem.ar.Count; i++) { if (i != 0) { name += "/"; } name += _songsItem.ar[i].name; } ListBox_artists.ItemsSource = _songsItem.ar; Button_artistName.Content = name; TextBlock_songName.Text = _songsItem.Name; LyricRoot lyricRoot = await Task.Run(() => LyricService.GetLyric(_songsItem.Id)); if (lyricRoot == null) { ListBox_lyric.ItemsSource = null; return; } lyricStrs = LyricService.GetLyricStrs(lyricRoot); if (lyricStrs != null) { if (lyricStrs.Count == 0) { DateTime dateTime = DateTime.Now; lyricStrs.Add(new LyricStr() { DateTime = dateTime, Original = "无歌词" }); } ListBox_lyric.ItemsSource = lyricStrs; ListBox_lyric.ScrollIntoView(lyricStrs.First()); } UpDateComment(); UpDateSimiSongs(); }