wjc
2023-08-18 c1cb2d8c6034a2ee7aa8a5710bba15b14f76cebc
2023年08月18日18:54:22

备份一下代码
14个文件已添加
11个文件已修改
1056 ■■■■■ 已修改文件
DLL/Android/Shared.Droid.dll 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/AksIcon/aks.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/AksIcon/like.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltvhisense.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/caidan.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/kaiguan.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/offbj.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/offtvbj.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/on.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/onbj.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/shouye.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/yingliangjia.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/HisenseTv/yingliangjian.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionPage.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Aks/CommonView/HorizontalFramLayout.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Aks/CommonView/ImageFramlayout.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/HisenseTV /HisenseTvPage.cs 979 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/Android/Shared.Droid.dll
Binary files differ
HDL-ON_Android/Assets/Phone/AksIcon/aks.png
HDL-ON_Android/Assets/Phone/AksIcon/like.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltvhisense.png
HDL-ON_Android/Assets/Phone/HisenseTv/caidan.png
HDL-ON_Android/Assets/Phone/HisenseTv/kaiguan.png
HDL-ON_Android/Assets/Phone/HisenseTv/offbj.png
HDL-ON_Android/Assets/Phone/HisenseTv/offtvbj.png
HDL-ON_Android/Assets/Phone/HisenseTv/on.png
HDL-ON_Android/Assets/Phone/HisenseTv/onbj.png
HDL-ON_Android/Assets/Phone/HisenseTv/shouye.png
HDL-ON_Android/Assets/Phone/HisenseTv/yingliangjia.png
HDL-ON_Android/Assets/Phone/HisenseTv/yingliangjian.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -195,7 +195,7 @@
      <HintPath>..\DLL\HdlEzvizDroid.dll</HintPath>
    </Reference>
    <Reference Include="Shared.Droid">
      <HintPath>..\..\..\Shared.Droid.dll</HintPath>
      <HintPath>..\DLL\Android\Shared.Droid.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
@@ -577,6 +577,18 @@
    <AndroidAsset Include="Assets\Phone\AksIcon\ykq_pindaojia.png" />
    <AndroidAsset Include="Assets\Phone\AksIcon\ykq_pindaojian.png" />
    <AndroidAsset Include="Assets\Phone\AksIcon\ykq_toupin.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricaltvhisense.png" />
    <AndroidAsset Include="Assets\Phone\AksIcon\aks.png" />
    <AndroidAsset Include="Assets\Phone\AksIcon\like.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\caidan.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\kaiguan.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\offbj.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\offtvbj.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\on.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\onbj.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\shouye.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\yingliangjia.png" />
    <AndroidAsset Include="Assets\Phone\HisenseTv\yingliangjian.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\values\colors.xml" />
@@ -1794,6 +1806,7 @@
    <Folder Include="Assets\Phone\FunctionIcon\Inverter\" />
    <Folder Include="Assets\Phone\FunctionIcon\Electrical\MechanicalArm\" />
    <Folder Include="Assets\Phone\AksIcon\" />
    <Folder Include="Assets\Phone\HisenseTv\" />
  </ItemGroup>
  <Import Project="..\HDL_ON\HDL_ON.projitems" Label="Shared" Condition="Exists('..\HDL_ON\HDL_ON.projitems')" />
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
HDL_ON/DAL/Server/HttpUtil.cs
@@ -19,11 +19,11 @@
        /// 公共域名就近解析
        /// </summary>
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        const string APP_KEY = "HDL-HOME-APP-TEST";
        const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//开发环境
        //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//开发环境
        //const string APP_KEY = "CPEVRLRT";//开发环境APP_KEY
        //const string SECRET_KEY = "CPEVRLSJCPEVRLSZ";//开发环境SECRET_KEY
        /// <summary>
HDL_ON/Entity/Function/Function.cs
@@ -1561,6 +1561,7 @@
        /// 影音中控
        /// </summary>
        public const string AvZkAiks = "av.zk.aiks";
        /// <summary>
        /// 萤石视频门锁spk列表
        /// </summary>
@@ -1571,6 +1572,8 @@
            list.Add(VideoDoorLock);
            return list;
        }
        /// <summary>
        /// 影音中控spk列表
        /// </summary>
@@ -2014,6 +2017,10 @@
        #region 家电
        /// <summary>
        /// 海信电视
        /// </summary>
        public const string ElectricalTvHisense = "electrical.tv.hisense";
        /// <summary>
        /// 家电、插座
        /// </summary>
        public const string ElectricSocket = "electrical.socket";
@@ -2127,6 +2134,7 @@
            spkList.Add(ElectricTuyaWaterValve);
            spkList.Add(ElectricTuyaWaterValve2);
            spkList.Add(AirSwitch);
            spkList.Add(ElectricalTvHisense);
            return spkList;
        }
HDL_ON/HDL_ON.projitems
@@ -591,6 +591,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Aks\Entity\KeypadEntity.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Aks\Entity\MovieLibraryEntity.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Aks\Entity\MovieLibraryInfoEntity.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\HisenseTV \HisenseTvPage.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
@@ -623,5 +624,6 @@
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Aks\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Aks\CommonView\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Aks\Entity\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\HisenseTV \" />
  </ItemGroup>
</Project>
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -349,6 +349,16 @@
                        }
                        break;
                    case SPK.ElectricalTvHisense:
                        {
                            //海信电视
                            var form = new UI2.FuntionControlView.HisenseTV.HisenseTvPage(function, btnName, btnFromFloor, comerom, action);
                            MainPage.BasePageView.AddChidren(form);
                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            form.Show();
                        }
                        break;
                }
            };
            return eventHandler;
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -12,6 +12,9 @@
namespace HDL_ON.UI
{
    /// <summary>
    /// 分类界面
    /// </summary>
    public partial class ClassificationPage : FrameLayout
    {
@@ -711,8 +714,12 @@
                        break;
                    case ShowFunction.Electric:
                        #region 电器
                        functionCount = FunctionList.List.GetElectricals().Count;
                        functionOnCount = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
#if DEBUG
                        functionCount = 1;
#endif
                        #endregion
                        break;
                    case ShowFunction.EnergyMonitoring:
@@ -833,10 +840,17 @@
                    IsMoreLines = true,
                };
                functionView.AddChidren(btnName); 
                if (item != ShowFunction.Environmental && item != ShowFunction.Sensor && item != ShowFunction.VideoIntercom
                    && item != ShowFunction.SecurityMonitoring && item != ShowFunction.FreshAir && item != ShowFunction.Music
                    && item != ShowFunction.EnergyMonitoring && item != ShowFunction.SecurityCenter
                //去掉功能外面开关个数;
                if (item != ShowFunction.Aks
                    && item != ShowFunction.VideoDoorLock
                    && item != ShowFunction.Environmental
                    && item != ShowFunction.Sensor
                    && item != ShowFunction.VideoIntercom
                    && item != ShowFunction.SecurityMonitoring
                    && item != ShowFunction.FreshAir
                    && item != ShowFunction.Music
                    && item != ShowFunction.EnergyMonitoring
                    && item != ShowFunction.SecurityCenter
                    && item != ShowFunction.Acst && item != ShowFunction.IpCam
                    && functionCount != 0)
                {
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -203,6 +203,7 @@
            else if (function.spk == SPK.AvZkAiks)
            {
                //隐藏开关按钮
                btnIcon.UnSelectedImagePath = "AksIcon/aks.png";
            }
            else if(function.spk == SPK.GroupControl) { }
            else if (function.spk == SPK.HvacCac)
HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -186,6 +186,8 @@
            else if (titleId == StringId.Electric)
            {
                functionList.AddRange(FunctionList.List.GetElectricals());
                functionList.Add(new Function { spk = SPK.ElectricalTvHisense, name = "海信电视1",sid="123456789"});
                functionList.Add(new Function { spk = SPK.ElectricalTvHisense, name = "海信电视2", sid = "1234567890" });
            }
            else if (titleId == StringId.EnvironmentalScience)
            {
HDL_ON/UI/UI2/FuntionControlView/Aks/CommonView/HorizontalFramLayout.cs
@@ -48,12 +48,12 @@
                {
                    Height = Application.GetRealHeight(28),
                    Width = Application.GetRealWidth(20),
                    SelectedBackgroundColor = MusicColor.ViewColor,
                    SelectedBackgroundColor = MusicColor.MusicTxet14SelectedColor,
                    BackgroundColor = 0x00000000,
                    Text = mList[i].filterName,
                    TextSize = TextSize.Text14,
                    TextColor = MusicColor.TextColor,
                    SelectedTextColor = MusicColor.MusicTxet14SelectedColor,
                    SelectedTextColor = MusicColor.WhiteColor,
                    TextAlignment = TextAlignment.Center,
                    Padding = new Padding(4, 4, 4, 4),
                    Radius = (uint)Application.GetRealHeight(4),
HDL_ON/UI/UI2/FuntionControlView/Aks/CommonView/ImageFramlayout.cs
@@ -34,6 +34,7 @@
            TextColor = MusicColor.WhiteColor,
            TextSize = TextSize.Text16,
            TextAlignment = TextAlignment.CenterRight,
            IsBold=true,
        };
        public Button btnName = new Button
@@ -43,8 +44,8 @@
            Height = Application.GetRealHeight(20),
            TextSize = TextSize.Text14,
            TextColor = MusicColor.TextColor,
            TextAlignment = TextAlignment.Center,
            Padding = new Padding(0, 4, 0, 4),
            TextAlignment = TextAlignment.CenterLeft,
            Padding = new Padding(0, 0, 0, 0),
            IsMoreLines = true,
        };
HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs
@@ -78,7 +78,7 @@
            this.topView.setBtn.Visible = true;
            this.topView.setBtn.Width = Application.GetMinRealAverage(32);
            this.topView.setBtn.Height = Application.GetMinRealAverage(32);
            this.topView.setBtn.UnSelectedImagePath = "Collection/CollectionGrayIcon.png";
            this.topView.setBtn.UnSelectedImagePath = "AksIcon/like.png";
            this.topView.topNameBtn.TextID = StringId.yingku;
            this.AddChidren(topView.TopFLayoutView());
            fLayout = new FrameLayout
@@ -162,7 +162,7 @@
                Height = Application.GetRealHeight(30),
                TextSize = TextSize.Text14,
                TextColor = MusicColor.TextColor,
                Text = "更多的...",
                TextID = StringId.LoadMore,
                TextAlignment = TextAlignment.TopCenter,
                Padding = new Padding(0, 20, 0, 20),
            };
HDL_ON/UI/UI2/FuntionControlView/HisenseTV /HisenseTvPage.cs
New file
@@ -0,0 +1,979 @@
using Shared;
using System;
using System.Collections.Generic;
using System.Text;
using HDL_ON.UI.CSS;
using HDL_ON.Entity;
using HDL_ON.DriverLayer;
using HDL_ON.UI.Music;
using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
using HDL_ON.UI.UI2.Intelligence.Automation;
using System.Linq;
using HDL_ON.UI.UI2.FuntionControlView.Aks.CommonView;
using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity;
namespace HDL_ON.UI.UI2.FuntionControlView.HisenseTV
{
    /// <summary>
    /// 海信电视界面
    /// </summary>
    public class HisenseTvPage : BaseFramLayout
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 设备
        /// </summary>
        private Function device;
        /// <summary>
        /// 上一级界面的设备名字控件
        /// </summary>
        private Button btnDeviceName;
        /// <summary>
        /// 上一级界面的房间名字控件
        /// </summary>
        private Button btnRoomName;
        /// <summary>
        /// 头部布局
        /// </summary>
        private TopView topView;
        /// <summary>
        /// 当前设备名称
        /// </summary>
        private Button btnCurrDeviceName;
        /// <summary>
        /// 区域
        /// </summary>
        private Button btnCurrDeviceRoom;
        /// <summary>
        ///收藏图标
        /// </summary>
        private Button btnCollectIcon;
        /// <summary>
        /// 门锁状态
        /// </summary>
        private Button btnDoorLockIcon;
        /// <summary>
        /// 表示来自那个界面
        /// </summary>
        private CommonMethod.Comerom comerom;
        /// <summary>
        /// 删除设备后需要更新界面的回调
        /// </summary>
        public Action action;
        #endregion
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="function">设备</param>
        /// <param name="btnDeviceName">上一级界面的设备名字控件(注:不能传null,没有可以传new Button())</param>
        /// <param name="btnRoomName">上一级界面的房间名字控件(注:不能传null,没有可以传new Button())</param>
        public HisenseTvPage(Function function, Button btnDeviceName, Button btnRoomName, CommonMethod.Comerom comerom, Action action)
        {
            this.device = function;
            this.btnDeviceName = btnDeviceName;
            this.btnRoomName = btnRoomName;
            this.comerom = comerom;
            this.action = action;
        }
        public void Show()
        {
            //初始化UI
            this.InitUI();
            //初始化事件
            this.EventListener();
            //读取数据
            this.ReadData();
        }
        /// <summary>
        /// 初始化界面
        /// </summary>
        private void InitUI()
        {
            #region   ---界面布局---
            this.BackgroundColor = MusicColor.ViewColor;
            this.topView = new TopView();
            this.topView.setBtn.Visible = true;
            this.topView.topNameBtn.TextID = StringId.dianshi;
            this.AddChidren(topView.TopFLayoutView());
            var vv = new VerticalScrolViewLayout
            {
                Y = topView.fLayout.Bottom,
                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
            };
            this.AddChidren(vv);
            var baseFL = new BaseFramLayout();
            vv.AddChidren(baseFL);
            var backgroundFl = new FrameLayout
            {
                Y = Application.GetRealHeight(24),
                X = Application.GetRealWidth(24),
                Height = Application.GetRealHeight(682),
                Width = Application.GetRealWidth(327),
                BackgroundImagePath = "HisenseTv/onbj.png",
                Name = "backgroundFl",
            };
            baseFL.AddChidren(backgroundFl);
            baseFL.AdjustRealHeight(51);
            btnCollectIcon = new Button
            {
                X = Application.GetRealWidth(273),
                Y = Application.GetRealHeight(14),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(40),
                UnSelectedImagePath = "MusicIcon/collect.png",
                SelectedImagePath = "MusicIcon/collectSelected.png",
                IsSelected = this.device.collect,
                Name = "collect"
            };
            backgroundFl.AddChidren(btnCollectIcon);
            btnCurrDeviceName = new Button
            {
                TextSize = TextSize.Text24,
                TextColor = MusicColor.Text18Color,
                Width = Application.GetRealWidth(160),
                Height = Application.GetRealHeight(33),
                Y = Application.GetRealHeight(16),
                X = Application.GetRealWidth(16),
                Text = this.device.name,
                TextAlignment = TextAlignment.CenterLeft,
                IsBold = true
            };
            backgroundFl.AddChidren(btnCurrDeviceName);
            btnCurrDeviceRoom = new Button
            {
                TextSize = TextSize.Text12,
                TextColor = MusicColor.MusicNoTxetColor,
                Width = Application.GetRealWidth(160),
                Height = Application.GetRealHeight(17),
                Y = btnCurrDeviceName.Bottom + Application.GetRealHeight(4),
                X = Application.GetRealWidth(16),
                Text = this.device.GetRoomListName(),
                TextAlignment = TextAlignment.CenterLeft,
            };
            backgroundFl.AddChidren(btnCurrDeviceRoom);
            int yHeight = btnCurrDeviceRoom.Bottom + Application.GetRealHeight(16);
            var shouyeFL = new CustomFrameLayout();
            backgroundFl.AddChidren(shouyeFL);
            shouyeFL.X = Application.GetRealWidth(24);
            shouyeFL.Y = yHeight;
            shouyeFL.AddImageView();
            shouyeFL.AddTextButtonView();
            shouyeFL.GetImageButton().UnSelectedImagePath = "HisenseTv/shouye.png";
            shouyeFL.GetTextButton().Text = "首页";
            var kaiguanFL = new CustomFrameLayout();
            backgroundFl.AddChidren(kaiguanFL);
            kaiguanFL.X = shouyeFL.Right + Application.GetRealWidth(37);
            kaiguanFL.Y = yHeight;
            kaiguanFL.AddImageView();
            kaiguanFL.AddTextButtonView();
            kaiguanFL.GetImageButton().UnSelectedImagePath = "HisenseTv/kaiguan.png";
            kaiguanFL.GetTextButton().Text = "关机";
            var caidanFL = new CustomFrameLayout();
            backgroundFl.AddChidren(caidanFL);
            caidanFL.X = kaiguanFL.Right + Application.GetRealWidth(37);
            caidanFL.Y = yHeight;
            caidanFL.AddImageView();
            caidanFL.AddTextButtonView();
            caidanFL.GetImageButton().UnSelectedImagePath = "HisenseTv/caidan.png";
            caidanFL.GetTextButton().Text = "菜单";
            var yinliangFL = new FrameLayout();
            backgroundFl.AddChidren(yinliangFL);
            yinliangFL.Height = Application.GetRealHeight(200);
            yinliangFL.Width = Application.GetRealWidth(68);
            yinliangFL.Y = shouyeFL.Bottom + Application.GetRealHeight(24);
            yinliangFL.X = shouyeFL.X;
            yinliangFL.BackgroundColor = 0xffF2F3F7;
            yinliangFL.Radius = (uint)Application.GetRealHeight(34);
            Button btn_jia = new Button
            {
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "HisenseTv/yingliangjia.png",
                Y = Application.GetRealHeight(20),
                Gravity = Gravity.CenterHorizontal,
            };
            yinliangFL.AddChidren(btn_jia);
            Button btnText = new Button
            {
                Y = Application.GetRealHeight(90),
                Height = Application.GetRealHeight(20),
                Text = "音量",
                TextColor = MusicColor.TextColor,
                TextSize = TextSize.Text14,
                Gravity = Gravity.CenterHorizontal,
            };
            yinliangFL.AddChidren(btnText);
            Button btn_jian = new Button
            {
                Y = Application.GetRealHeight(148),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "HisenseTv/yingliangjian.png",
                Gravity = Gravity.CenterHorizontal,
            };
            yinliangFL.AddChidren(btn_jian);
            CustomButton bofangBtn = new CustomButton();
            bofangBtn.Text = "播放";
            bofangBtn.Y = shouyeFL.Bottom + Application.GetRealHeight(24);
            bofangBtn.X = yinliangFL.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(bofangBtn);
            CustomButton zantingBtn = new CustomButton();
            zantingBtn.Text = "暂停";
            zantingBtn.Y = shouyeFL.Bottom + Application.GetRealHeight(24);
            zantingBtn.X = bofangBtn.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(zantingBtn);
            CustomButton kuaijinBtn = new CustomButton();
            kuaijinBtn.Text = "快进";
            kuaijinBtn.Y = bofangBtn.Bottom + Application.GetRealHeight(16);
            kuaijinBtn.X = yinliangFL.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(kuaijinBtn);
            CustomButton kauituiBtn = new CustomButton();
            kauituiBtn.Text = "快退";
            kauituiBtn.Y = bofangBtn.Bottom + Application.GetRealHeight(16);
            kauituiBtn.X = kuaijinBtn.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(kauituiBtn);
            CustomButton jingyinBtn = new CustomButton();
            jingyinBtn.Text = "静音";
            jingyinBtn.Y = kuaijinBtn.Bottom + Application.GetRealHeight(16);
            jingyinBtn.X = yinliangFL.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(jingyinBtn);
            CustomButton shezhiBtn = new CustomButton();
            shezhiBtn.Text = "设置";
            shezhiBtn.Y = kuaijinBtn.Bottom + Application.GetRealHeight(16);
            shezhiBtn.X = jingyinBtn.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(shezhiBtn);
            CustomButton jiechujingyinBtn = new CustomButton();
            jiechujingyinBtn.Text = "解除静音";
            jiechujingyinBtn.Y = jingyinBtn.Bottom + Application.GetRealHeight(16);
            jiechujingyinBtn.X = yinliangFL.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(jiechujingyinBtn);
            CustomButton fanhuiBtn = new CustomButton();
            fanhuiBtn.Text = "返回";
            fanhuiBtn.Y = jingyinBtn.Bottom + Application.GetRealHeight(16);
            fanhuiBtn.X = jiechujingyinBtn.Right + Application.GetRealWidth(37);
            backgroundFl.AddChidren(fanhuiBtn);
            TypeFrameLayout typeFrameLayout = new TypeFrameLayout();
            typeFrameLayout.middLayout.Y = yinliangFL.Bottom + Application.GetRealHeight(32);
            typeFrameLayout.AddView(backgroundFl);
            MuenFrameLayout muenFrameLayout = new MuenFrameLayout ();
            muenFrameLayout.AddView(backgroundFl);
            muenFrameLayout.parentFl.Y = Application.GetRealHeight(482);
            muenFrameLayout.parentFl.X = Application.GetRealWidth(73);
            typeFrameLayout.SetLfteClickListener((btn) => {
            });
            typeFrameLayout.SetRightClickListener((btn) => {
            });
            muenFrameLayout.SetLeftClickListener((b) => {
            });
            #endregion
        }
        /// <summary>
        /// 注册事件
        /// </summary>
        private void EventListener()
        {
            //返回
            this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                this.RemoveFromParent();
            };
            //设置
            this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
            {
                CommonMethod.Current.MainThread(() =>
                {
                    //调用秀绕的界面
                    var infoView = new UI.FunctionBaseInfoSetPage(this.device, () =>
                    {
                        if (this.btnDeviceName == null || this.btnRoomName == null || this.device == null)
                        {
                            return;
                        }
                        ////刷新显示
                        this.btnDeviceName.Text = this.device.name;
                        this.btnRoomName.Text = this.device.GetRoomListName();
                        this.btnCurrDeviceName.Text = this.device.name;
                        this.btnCurrDeviceRoom.Text = this.device.GetRoomListName();
                        this.CalculatedPosition();//重新计算宽度
                    });
                    infoView.actionDel += () =>
                    {
                        //解绑设备后
                        this.RemoveFromParent();
                        this.action?.Invoke();
                    };
                    MainPage.BasePageView.AddChidren(infoView);
                    infoView.LoadPage();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                });
            };
            //收藏
            this.btnCollectIcon.MouseUpEventHandler += (sender, e) =>
            {
                btnCollectIcon.IsSelected = this.device.collect = !btnCollectIcon.IsSelected;
                this.device.CollectFunction();
            };
        }
        /// <summary>
        /// 初始数据
        /// </summary>
        private void ReadData()
        {
            CommonMethod.Current.Loading.Start();
            CommonMethod.Current.SunThread(() =>
            {
                try
                {
                    CommonMethod.Current.MainThread(() =>
                    {
                    });
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        CommonMethod.Current.Loading.Hide();
                    });
                }
            });
        }
        /// <summary>
        /// 重新计算宽度(设备名称,房间控件)
        /// </summary>
        private void CalculatedPosition()
        {
            this.btnCurrDeviceName.Width = this.btnCurrDeviceName.GetTextWidth();
            this.btnCurrDeviceName.Width += 10;
            if (this.btnCurrDeviceName.GetTextWidth() > this.btnCollectIcon.X)
            {
                //重新计算宽度
                this.btnCurrDeviceName.Width = this.btnCollectIcon.X + Application.GetRealWidth(-10);
            }
            this.btnCurrDeviceRoom.Width = this.btnCurrDeviceRoom.GetTextWidth();
            this.btnCurrDeviceRoom.Width += 10;
            if (this.btnCurrDeviceRoom.GetTextWidth() > this.btnCollectIcon.X)
            {
                //重新计算宽度
                this.btnCurrDeviceRoom.Width = this.btnCollectIcon.X + Application.GetRealWidth(-20 - 10);
            }
            //this.cellFrame.X = this.btnCurrDeviceRoom.Right + Application.GetRealWidth(20);
        }
    }
    /// <summary>
    /// 自定义(首页,关机,菜单)容器
    /// </summary>
    class CustomFrameLayout : FrameLayout
    {
        public const int widthFrameLayout = 68;
        public const int heightFrameLayout = 68 + 8 + 20;
        public const int interval = 37;//行中的列间隔值
        public CustomFrameLayout(int width = widthFrameLayout, int height = heightFrameLayout)
        {
            this.Width = Application.GetRealWidth(width);
            this.Height = Application.GetRealHeight(height);
        }
        Button btnImage = new Button
        {
            Width = Application.GetRealWidth(68),
            Height = Application.GetRealWidth(68),
            Gravity = Gravity.TopCenter,
            Name = "btnImage",
        };
        Button btnText = new Button
        {
            Width = Application.GetRealWidth(68),
            Height = Application.GetRealWidth(20),
            TextID = StringId.dangqianmenweiguan,
            TextSize = TextSize.Text14,
            TextColor = MusicColor.TextColor,
            TextAlignment = TextAlignment.Center,
            Gravity = Gravity.CenterHorizontal,
            Name = "btnText",
            IsMoreLines = true,
        };
        public void AddImageView()
        {
            this.AddChidren(btnImage);
        }
        public void AddTextButtonView()
        {
            btnText.Y = Application.GetRealHeight(8) + btnImage.Bottom;
            this.AddChidren(btnText);
        }
        public Button GetImageButton()
        {
            return this.btnImage;
        }
        public Button GetTextButton()
        {
            return this.btnText;
        }
        /// <summary>
        /// 事件监听方法
        /// </summary>
        /// <param name="action">回调(第一个是父类对象;第二个是图标对象;第三个是状态对象</param>
        /// <param name="button1">注意:在SetClickListener()前面调用AddImageView()才有效</param>
        /// <param name="button2">注意:在SetClickListener()前面调用AddImageView()才有效</param>
        public void SetClickListener(Action<FrameLayout, Button, Button> action)
        {
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                this.BackgroundColor = 0xFFF2F3F7;
                action?.Invoke(this, btnImage, btnText);
            };
            this.MouseDownEventHandler += DownClick;
            btnImage.MouseDownEventHandler += DownClick;
            btnText.MouseDownEventHandler += DownClick;
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
             {
                 this.BackgroundColor = 0x00000000;
             };
            this.MouseUpEventHandler += UpClick;
            btnImage.MouseUpEventHandler += UpClick;
            btnText.MouseUpEventHandler += UpClick;
        }
    }
    /// <summary>
    /// 按键容器
    /// </summary>
    class CustomButton : Button
    {
        public CustomButton()
        {
            this.Width = Application.GetRealWidth(68);
            this.Height = Application.GetRealHeight(38);
            this.TextSize = 14;
            this.TextColor = MusicColor.TextColor;
            this.TextAlignment = TextAlignment.Center;
            this.IsMoreLines = true;
            this.BackgroundColor = 0xffECEDEE;
            this.Radius = (uint)Application.GetRealHeight(30);
        }
        /// <summary>
        /// 事件监听方法
        /// </summary>
        /// <param name="action">回调(第一个是父类对象</param>
        public void SetClickListener(Action<Button> action)
        {
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                this.BackgroundColor = 0xFFF2F3F7;
                action?.Invoke(this);
            };
            this.MouseDownEventHandler += DownClick;
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
            {
                this.BackgroundColor = 0x00000000;
            };
            this.MouseUpEventHandler += UpClick;
        }
    }
    /// <summary>
    /// 类型(控制 信号源)容器
    /// </summary>
    class TypeFrameLayout
    {
        #region  ----控制 信号源----
        public FrameLayout middLayout = new FrameLayout
        {
            Height = Application.GetRealHeight(29),
            Y = Application.GetRealHeight(32),
        };
        FrameLayout leftLayout = new FrameLayout
        {
            X = Application.GetRealWidth(42),
            Height = Application.GetRealHeight(29),
            Width = Application.GetRealWidth(32),
        };
        Button leftBtnTitle = new Button
        {
            Height = Application.GetRealHeight(23),
            TextAlignment = TextAlignment.CenterLeft,
            TextColor = MusicColor.TextColor,
            SelectedTextColor = MusicColor.MusicTxet14SelectedColor,
            TextSize = TextSize.Text16,
            TextID = StringId.kongzhi,
            IsBold=true,
        };
        Button leftBtnLine = new Button
        {
            Height = Application.GetRealHeight(2),
            BackgroundColor = MusicColor.TextColor,
            SelectedBackgroundColor = MusicColor.MusicTxet14SelectedColor,
            Gravity = Gravity.CenterHorizontal,
        };
        //频道点击控件
        FrameLayout clickLeftLayout = new FrameLayout
        {
        };
        FrameLayout rightLayout = new FrameLayout
        {
            Width = Application.GetRealWidth(48),
        };
        Button rightBtnTitle = new Button
        {
            Height = Application.GetRealHeight(23),
            Width = Application.GetRealWidth(48),
            TextAlignment = TextAlignment.CenterLeft,
            TextColor = MusicColor.TextColor,
            SelectedTextColor = MusicColor.MusicTxet14SelectedColor,
            TextSize = TextSize.Text16,
            Text = "信号源",
            IsBold = true,
        };
        Button rightBtnLine = new Button
        {
            Height = Application.GetRealHeight(2),
            BackgroundColor = MusicColor.TextColor,
            SelectedBackgroundColor = MusicColor.MusicTxet14SelectedColor,
            Gravity = Gravity.CenterHorizontal,
        };
        //信号源点击控件
        FrameLayout clickRightLayout = new FrameLayout
        {
        };
        #endregion
        /// <summary>
        ///
        /// </summary>
        /// <param name="layout"></param>
        public void AddView(FrameLayout layout)
        {
            layout.AddChidren(middLayout);
            middLayout.AddChidren(leftLayout);
            leftLayout.AddChidren(leftBtnTitle);
            leftLayout.AddChidren(leftBtnLine);
            leftLayout.AddChidren(clickLeftLayout);
            middLayout.AddChidren(rightLayout);
            rightLayout.AddChidren(rightBtnTitle);
            rightLayout.AddChidren(rightBtnLine);
            rightLayout.AddChidren(clickRightLayout);
            leftBtnTitle.Width = leftLayout.Width;
            leftBtnLine.Y = leftBtnTitle.Bottom + Application.GetRealHeight(4);
            if (leftBtnTitle.GetTextWidth() < leftBtnTitle.Width)
            {
                leftBtnTitle.Width = leftBtnTitle.GetTextWidth();
            }
            leftBtnLine.Width = leftBtnTitle.Width;
            clickLeftLayout.Height = leftLayout.Height;
            clickLeftLayout.Width = leftLayout.Width;
            rightLayout.X = leftLayout.Right + Application.GetRealWidth(171);
            rightLayout.Y = leftLayout.Y;
            rightLayout.Height = leftLayout.Height;
            rightBtnLine.Y = rightBtnTitle.Bottom + Application.GetRealHeight(4);
            if (rightBtnTitle.GetTextWidth() < rightBtnTitle.Width)
            {
                rightBtnTitle.Width = rightBtnTitle.GetTextWidth();
            }
            rightBtnLine.Width = rightBtnTitle.Width;
            clickRightLayout.Height = leftLayout.Height;
            clickRightLayout.Width = leftLayout.Width;
            //初始值
            leftBtnTitle.IsSelected = true;
            leftBtnLine.IsSelected = true;
            leftBtnLine.Visible = true;
            rightBtnTitle.IsSelected = false;
            rightBtnLine.IsSelected = false;
            rightBtnLine.Visible = false;
        }
        /// <summary>
        /// 信号源监听方法
        /// </summary>
        /// <param name="action">回调(第一个是父类对象</param>
        public void SetRightClickListener(Action<Button> action)
        {
            //频道点击事件
            clickLeftLayout.MouseDownEventHandler += (sen, e) =>
            {
                leftBtnTitle.IsSelected = true;
                leftBtnLine.IsSelected = true;
                leftBtnLine.Visible = true;
                rightBtnTitle.IsSelected = false;
                rightBtnLine.IsSelected = false;
                rightBtnLine.Visible = false;
            };
        }
        /// <summary>
        /// 控制监听方法
        /// </summary>
        /// <param name="action">回调(第一个是父类对象</param>
        public void SetLfteClickListener(Action<Button> action)
        {
            //控制点击事件
            clickRightLayout.MouseDownEventHandler += (sen, e) =>
            {
                leftBtnTitle.IsSelected = false;
                leftBtnLine.IsSelected = false;
                leftBtnLine.Visible = false;
                rightBtnTitle.IsSelected = true;
                rightBtnLine.IsSelected = true;
                rightBtnLine.Visible = true;
            };
        }
    }
    /// <summary>
    /// 菜单容器
    /// </summary>
    class MuenFrameLayout
    {
        public FrameLayout parentFl = new FrameLayout
        {
            Width = Application.GetRealWidth(180),
            Height = Application.GetRealWidth(180),
            Radius = (uint)Application.GetRealHeight(90),
            BackgroundColor= 0xffF2F3F7,
        };
        Button btnTop = new Button
        {
            Y = Application.GetRealWidth(16),
            X = Application.GetRealWidth(78),
            Width = Application.GetRealWidth(24),
            Height = Application.GetRealHeight(20),
            UnSelectedImagePath = "AksIcon/shang.png",
            SelectedImagePath = "AksIcon/shang_selected.png",
            Name = "上",
        };
        Button btnBottom = new Button
        {
            Y = Application.GetRealWidth(144),
            X = Application.GetRealWidth(78),
            Width = Application.GetRealWidth(24),
            Height = Application.GetRealHeight(20),
            UnSelectedImagePath = "AksIcon/xia.png",
            SelectedImagePath = "AksIcon/xia_selected.png",
            Name = "下",
        };
        Button btnLeft = new Button
        {
            Y = Application.GetRealWidth(78),
            X = Application.GetRealWidth(16),
            Width = Application.GetRealWidth(20),
            Height = Application.GetRealHeight(24),
            UnSelectedImagePath = "AksIcon/zuo.png",
            SelectedImagePath = "AksIcon/zuo_selected.png",
            Name = "左",
        };
        Button btnRight = new Button
        {
            Y = Application.GetRealWidth(78),
            X = Application.GetRealWidth(144),
            Width = Application.GetRealWidth(20),
            Height = Application.GetRealHeight(24),
            UnSelectedImagePath = "AksIcon/you.png",
            SelectedImagePath = "AksIcon/you_selected.png",
            Name = "右",
        };
        Button btnOkbj = new Button
        {
            //Y = Application.GetRealWidth(52),
            //X = Application.GetRealWidth(52),
            Width = Application.GetRealWidth(76),
            Height = Application.GetRealWidth(76),
            Radius = (uint)Application.GetRealHeight(38),
            Gravity=Gravity.Center,
            BackgroundColor = MusicColor.WhiteColor,
        };
        Button btnOk = new Button
        {
            //Y = Application.GetRealWidth(76),
            //X = Application.GetRealWidth(76),
            Gravity = Gravity.Center,
            Width = Application.GetRealWidth(28),
            Height = Application.GetRealWidth(28),
            Radius = (uint)Application.GetRealHeight(14),
            BackgroundColor = MusicColor.SelectedColor,
            Name = "确定"
        };
        public void AddView(FrameLayout layout)
        {
            layout.AddChidren(parentFl);
            parentFl.AddChidren(btnTop);
            parentFl.AddChidren(btnBottom);
            parentFl.AddChidren(btnLeft);
            parentFl.AddChidren(btnRight);
            parentFl.AddChidren(btnOkbj);
            parentFl.AddChidren(btnOk);
        }
        /// <summary>
        /// 上
        /// </summary>
        /// <param name="action"></param>
        public void SetTopClickListener(Action<KeypadEntity> action)
        {
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
            {
                btnTop.IsSelected = false;
                //弹起来还原背景颜色
            };
            btnTop.MouseUpEventHandler += UpClick;
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                //按下去改变背景颜色
                btnTop.IsSelected = true;
                KeypadEntity keypadEntity = new KeypadEntity();
                keypadEntity.name = btnTop.Name;
                keypadEntity.keypad = "key_up";
                action?.Invoke(keypadEntity);
            };
            btnTop.MouseDownEventHandler += DownClick;
        }
        /// <summary>
        /// 下
        /// </summary>
        /// <param name="action"></param>
        public void SetBottomClickListener(Action<KeypadEntity> action)
        {
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
            {
                btnBottom.IsSelected = false;
                //弹起来还原背景颜色
            };
            btnBottom.MouseUpEventHandler += UpClick;
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                btnBottom.IsSelected = true;
                KeypadEntity keypadEntity = new KeypadEntity();
                keypadEntity.name = btnBottom.Name;
                keypadEntity.keypad = "key_down";
                action?.Invoke(keypadEntity);
                //按下去改变背景颜色
            };
            btnBottom.MouseDownEventHandler += DownClick;
        }
        /// <summary>
        /// 左
        /// </summary>
        /// <param name="action"></param>
        public void SetLeftClickListener(Action<KeypadEntity> action)
        {
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
            {
                btnLeft.IsSelected = false;
                //弹起来还原背景颜色
            };
            btnLeft.MouseUpEventHandler += UpClick;
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                btnLeft.IsSelected = true;
                KeypadEntity keypadEntity = new KeypadEntity();
                keypadEntity.name = btnLeft.Name;
                keypadEntity.keypad = "key_left";
                action?.Invoke(keypadEntity);
                //按下去改变背景颜色
            };
            btnLeft.MouseDownEventHandler += DownClick;
        }
        /// <summary>
        /// 右
        /// </summary>
        /// <param name="action"></param>
        public void SetRightClickListener(Action<KeypadEntity> action)
        {
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
            {
                btnRight.IsSelected = false;
                //弹起来还原背景颜色
            };
            btnRight.MouseUpEventHandler += UpClick;
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                //按下去改变背景颜色
                btnRight.IsSelected = true;
                KeypadEntity keypadEntity = new KeypadEntity();
                keypadEntity.name = btnRight.Name;
                keypadEntity.keypad = "key_right";
                action?.Invoke(keypadEntity);
            };
            btnRight.MouseDownEventHandler += DownClick;
        }
        /// <summary>
        /// ok
        /// </summary>
        /// <param name="action"></param>
        public void SetOkClickListener(Action<KeypadEntity> action)
        {
            EventHandler<MouseEventArgs> UpClick = (sender, e) =>
            {
                btnOk.BackgroundColor = MusicColor.SelectedColor;// this.UpBackgroundColor;
                //弹起来还原背景颜色
            };
            btnOk.MouseUpEventHandler += UpClick;
            EventHandler<MouseEventArgs> DownClick = (sender, e) =>
            {
                KeypadEntity keypadEntity = new KeypadEntity();
                keypadEntity.name = btnOk.Name;
                keypadEntity.keypad = "key_ok";
                action?.Invoke(keypadEntity);
                btnOk.BackgroundColor = 0xffF2F3F7;
            };
            btnOk.MouseDownEventHandler += DownClick;
        }
    }
}