using System; using Shared; using HDL_ON.UI.Music; using System.Collections.Generic; using HDL_ON.UI.UI2.FuntionControlView.Music; namespace HDL_ON.UI.Music { public class A31SongPlay : FrameLayout { public A31SongPlay() { Tag = "Music"; } public void Show(SongList songLists) { this.BackgroundColor = MusicColor.ViewColor; var topView = new TopView(); this.AddChidren(topView.TopFLayoutView()); topView.topNameBtn.Text=songLists.group; topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { this.RemoveFromParent(); }; var vv = new VerticalRefreshLayout { BackgroundColor = MusicColor.WhiteColor, Y = topView.fLayout.Bottom, Height = Application.GetRealHeight(H_W.H - H_W.T_Height), }; this.AddChidren(vv); vv.BeginHeaderRefreshingAction += () => { System.Threading.Tasks.Task.Run(() => { try { //获取歌曲列表 var songList = SendMethod.Current.GetSingleSongList(A31MusicModel.Current.functionMusic, songLists.group, songLists.source); CommonMethod.Current.AddSongListMemory(songList, songLists.source);//保存缓存 } catch { } finally { Application.RunOnMainThread(() => { vv.EndHeaderRefreshing(); //从缓存拿列表 var songListMemory = CommonMethod.Current.GetSongListMemory(songLists.group, songLists.source); ///加载音乐列表 SongListView(vv, songListMemory.songs, songListMemory.group, songLists.source); }); } }); }; ///加载音乐列表 SongListView(vv, songLists.songs, songLists.group,songLists.source); } /// /// 加载音乐列表 /// /// 父控件 /// 音乐列表 /// 列表名 /// 音乐源 public static void SongListView(VerticalRefreshLayout vv, List musicList, string listName,string source, FrameLayout frame = null) { if (vv!=null) { vv.RemoveAll(); } for (int i = 0; i < musicList.Count; i++) { var songs = musicList[i]; if (songs == null) { continue; } UI.Music.View.SongView songView = new UI.Music.View.SongView(); songView.SongFrameLayout(vv, songs); songView.songBtn.Text = songs.name; ///点击播放事件 songView.clickBtn.MouseUpEventHandler += (sender, e) => { System.Threading.Tasks.Task.Run(() => { System.Threading.Thread.Sleep(50); Application.RunOnMainThread(() => { //修改缓存属性状态值 A31MusicModel.Current.functionMusic.SetAttrState("song_name", songView.songBtn.Text); A31MusicModel.Current.functionMusic.SetAttrState("playlist_name", listName); //移除界面 if (frame != null) { frame.RemoveFromParent(); } MainPage.BasePageView.RemoveViewByTag("Music"); Dictionary dic = new Dictionary(); dic.Add("song_name", songView.songBtn.Text); dic.Add("playlist_name", listName); if (!string.IsNullOrEmpty(songs.url)) { dic.Add("url", songs.url); } if (!string.IsNullOrEmpty(source)) { dic.Add("source", source); } SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic); }); }); }; } } } public class UpdateThread { public UpdateThread() { } /// /// 定时更新当前播放音乐 /// /// 当前界面 /// 每一条音乐的主控件 /// 点前播放器 public static void updateCurrMusicThread(FrameLayout frame, VerticalRefreshLayout middViewLayout, A31MusicModel a31MusicModel) { System.Threading.Thread updateSelectedMusicThread = new System.Threading.Thread(() => { while (frame.Parent != null) { //A31MusicModel.LogMusic("已启动更新音乐列表某一条音乐状态的线程"); System.Threading.Thread.Sleep(1000); Application.RunOnMainThread(() => { try { for (int i = 0; i < middViewLayout.ChildrenCount; i++) { RowLayout view = (RowLayout)middViewLayout.GetChildren(i); var volIconBtn = (Button)view.GetChildren(0);//直接FrameLayout父控件找到该控件Button var songNameBtn = (Button)view.GetChildren(1);//直接FrameLayout父控件找到该控件Button var artistNameBtn = (Button)view.GetChildren(2);//直接FrameLayout父控件找到该控件Button //if (a31MusicModel.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString()) //{ // volIconBtn.Visible = true; // songNameBtn.TextColor = UI.Music.MusicColor.SelectedColor; // songNameBtn.X = Application.GetRealWidth(48); // artistNameBtn.X = songNameBtn.Right; // artistNameBtn.TextColor = UI.Music.MusicColor.SelectedColor; //} //else //{ // volIconBtn.Visible = false; // songNameBtn.TextColor = UI.Music.MusicColor.MusicTxet14Color; // songNameBtn.X = Application.GetRealWidth(16); // artistNameBtn.X = songNameBtn.Right; // artistNameBtn.TextColor = UI.Music.MusicColor.MusicNoTxetColor; //} } } catch { } }); } }); updateSelectedMusicThread.Start(); } } }