示例#1
0
        /// <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);
                }
            }
        }
示例#2
0
        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();
        }