using System; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public partial class ColorTureLampPage : FrameLayout { #region 控件集合 static ColorTureLampPage bodyView; /// /// 控制界面加载区域 /// FrameLayout controlView; /// /// 功能备注 /// Button btnFunctionName; /// /// 功能所属楼层、房间 /// Button btnFromFoorAndRoom; /// /// 收藏按钮 /// Button btnCollection; /// /// 调光控件 /// WaveSeekBarOn dimmerBar; /// /// 亮度显示按钮 /// Button btnBrightnessText; /// /// 渐变时间修改 /// DiyImageSeekBar barFadeTime; /// /// 色温的滑动控件 /// CCTSeekBarControl barColorTemplatrue; /// /// 开关按钮 /// Button btnSwitch; /// /// 色温快捷方式按钮 /// Button btnShortcut; #endregion #region 区域变量 Light lightTemp = new Light(); Function function; Button btnCollection_Out; Button btnFunctionName_Out; Button btnFromFloor_Out; bool onDimmerBar = false; /// /// 刷新显示信息 /// Action actionRefresh; #endregion public override void RemoveFromParent() { base.RemoveFromParent(); bodyView = null; } public ColorTureLampPage(Function func) { bodyView = this; function = func; } public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut) { btnCollection_Out = btnCollectionIcon; btnFunctionName_Out = btnFunctionNameOut; btnFromFloor_Out = btnFromFloorOut; bodyView.BackgroundColor = CSS_Color.BackgroundColor; controlView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(88), Width = Application.GetRealWidth(327), Height = Application.GetRealHeight(526), BackgroundImagePath = "Public/Fragmentbg.png", }; bodyView.AddChidren(controlView); btnFunctionName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(14), Width = Application.GetRealWidth(270), Height = Application.GetRealHeight(37), TextColor = CSS_Color.FirstLevelTitleColor, TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel, Text = function.name, }; controlView.AddChidren(btnFunctionName); btnFromFoorAndRoom = new Button() { X = Application.GetRealWidth(16), Y = btnFunctionName.Bottom, Width = Application.GetRealWidth(270), Height = Application.GetRealHeight(21), TextColor = CSS_Color.PromptingColor1, TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = function.GetRoomListName() }; controlView.AddChidren(btnFromFoorAndRoom); btnCollection = new Button() { X = Application.GetRealWidth(273), Y = Application.GetRealHeight(14), Width = Application.GetMinRealAverage(40), Height = Application.GetMinRealAverage(40), SelectedImagePath = "Collection/CollectionIcon.png", UnSelectedImagePath = "Collection/CollectionGrayIcon.png", IsSelected = function.collect }; controlView.AddChidren(btnCollection); //2020-12-16 如果是成员隐藏收藏功能 //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare) //{ // controlView.AddChidren(btnCollection); //} dimmerBar = new WaveSeekBarOn() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(108), Width = Application.GetRealWidth(142 - 16 - 16), Height = Application.GetRealHeight(222), BorderColor = 0x00000000, CornerRadius = Application.GetRealWidth(20), BorderWidth = 0, Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)), IsProgressTextShow = false, }; controlView.AddChidren(dimmerBar); if (function.trait_on_off.curValue.ToString() == "on") { dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); } else { dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor); } dimmerBar.Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)); btnBrightnessText = new Button() { Gravity = Gravity.CenterHorizontal, Y = ((100 - Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80), Width = Application.GetRealWidth(56), Height = Application.GetRealWidth(46), UnSelectedImagePath = "FunctionIcon/Light/BrightnessBg.png", TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, Text = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)) + "%", }; controlView.AddChidren(btnBrightnessText); #region 色温 var cctAttr = function.GetAttribute(FunctionAttributeKey.CCT); if(cctAttr.min == 0) { cctAttr.min = 2700; } if(cctAttr.max == 0) { cctAttr.max = 6500; } //色温 var btnTempClolor = new Button(); btnTempClolor.X = Application.GetRealWidth(35); btnTempClolor.Y = Application.GetRealHeight(306 + 60); btnTempClolor.Width = Application.GetRealWidth(224); btnTempClolor.Height = Application.GetRealHeight(21); btnTempClolor.TextAlignment = TextAlignment.CenterLeft; btnTempClolor.TextColor = CSS_Color.FirstLevelTitleColor; btnTempClolor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; btnTempClolor.TextID = StringId.ColorTemperature; controlView.AddChidren(btnTempClolor); //2700K var btnTempClolorMin = new Button(); btnTempClolorMin.Y = btnTempClolor.Bottom + Application.GetRealHeight(9); btnTempClolorMin.Width = Application.GetRealWidth(54); btnTempClolorMin.Height = Application.GetRealHeight(21); btnTempClolorMin.Text = cctAttr.min + "K"; btnTempClolorMin.TextAlignment = TextAlignment.CenterRight; btnTempClolorMin.TextColor = CSS_Color.PromptingColor1; btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; controlView.AddChidren(btnTempClolorMin); //滑动条的背景图片 var btnColorTemplatrueBack = new Button(); //需要减掉滑动条的左右间距 btnColorTemplatrueBack.Width = Application.GetRealWidth(210 - 20 * 2); btnColorTemplatrueBack.Height = Application.GetRealHeight(8); btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal; btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png"; controlView.AddChidren(btnColorTemplatrueBack); //滑动条控件 barColorTemplatrue = new CCTSeekBarControl(); barColorTemplatrue.X = btnTempClolorMin.Right; barColorTemplatrue.Y = Application.GetRealHeight(340); barColorTemplatrue.MinValue = cctAttr.min /100; barColorTemplatrue.MaxValue = cctAttr.max / 100; barColorTemplatrue.ProgressBarColor = 0x00000000;//全部透明 barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000; barColorTemplatrue.SeekBarBackgroundColor = 0x00000000; controlView.AddChidren(barColorTemplatrue); barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2; //显示上方的Txt barColorTemplatrue.ShowCustomTextView(Application.GetRealWidth(50), CSS_FontSize.PromptFontSize_FirstLevel, CSS_Color.FirstLevelTitleColor); var cct = 27; int.TryParse(function.GetAttrState(FunctionAttributeKey.CCT), out cct); barColorTemplatrue.Progress = cct; //设置初始值 barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K"); //变更背景图的Y轴坐标 btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2; //6500K var btnTempClolorMax = new Button(); btnTempClolorMax.Y = btnTempClolorMin.Y; btnTempClolorMax.X = barColorTemplatrue.Right; btnTempClolorMax.Width = Application.GetRealWidth(54); btnTempClolorMax.Height = Application.GetRealHeight(21); btnTempClolorMax.Text = cctAttr.max + "K"; btnTempClolorMax.TextAlignment = TextAlignment.CenterLeft; btnTempClolorMax.TextColor = CSS_Color.PromptingColor1; btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; controlView.AddChidren(btnTempClolorMax); #endregion #region 渐变时间调节 if (function.GetAttribute(FunctionAttributeKey.FadeTime) != null) { var btnGradualChangeText = new Button() { X = Application.GetRealWidth(35), Y = Application.GetRealHeight(385), Width = Application.GetRealWidth(224), Height = Application.GetRealHeight(21), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextID = StringId.SpeedOfChange, }; controlView.AddChidren(btnGradualChangeText); var btnGradualChangeMinValuesText = new Button() { X = Application.GetRealWidth(35), Y = btnGradualChangeText.Bottom + Application.GetRealHeight(8), Width = Application.GetRealWidth(22), Height = Application.GetRealHeight(21), Text = "0s", TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; controlView.AddChidren(btnGradualChangeMinValuesText); barFadeTime = new DiyImageSeekBar() { X = btnGradualChangeMinValuesText.Right, Y = Application.GetRealHeight(412 - 21) + Application.GetRealHeight(8), Width = Application.GetRealWidth(210), Height = Application.GetRealHeight(54), SeekBarViewHeight = Application.GetRealHeight(8), ThumbImagePath = "Public/ThumbImage.png", ThumbImageHeight = Application.GetRealHeight(54), ProgressBarColor = CSS_Color.MainColor, ProgressTextColor = CSS_Color.FirstLevelTitleColor, ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel, ProgressBarUnitSring = "s", MaxValue = 10, Progress = Convert.ToInt32( function.GetAttrState(FunctionAttributeKey.FadeTime)), SeekBarPadding = Application.GetRealWidth(20), }; controlView.AddChidren(barFadeTime); var btnGradualChangeMaxValuesText = new Button() { X = barFadeTime.Right, Y = btnGradualChangeText.Bottom + Application.GetRealHeight(8), Width = Application.GetRealWidth(35), Height = Application.GetRealHeight(21), Text = "10s", TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; controlView.AddChidren(btnGradualChangeMaxValuesText); } #endregion btnSwitch = new Button() { X = Application.GetRealWidth(180), Y = Application.GetRealHeight(466), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), UnSelectedImagePath = "Public/PowerClose.png", SelectedImagePath = "Public/PowerOpen.png", IsSelected = function.trait_on_off.curValue.ToString() == "on", }; controlView.AddChidren(btnSwitch); //色温的快捷方式图标 btnShortcut = new Button(); btnShortcut.X = Application.GetRealWidth(116); btnShortcut.Y = btnSwitch.Y; btnShortcut.Width = Application.GetRealWidth(32); btnShortcut.Height = Application.GetRealWidth(32); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/CozyIconOn.png"; controlView.AddChidren(btnShortcut); btnShortcut.MouseUpEventHandler += (sender, e) => { //显示色温的快捷方式的弹窗 this.ShowColorTemperatrueShortcutView(); }; LoadEventList(); new TopViewDiv(bodyView, Language.StringByID(StringId.Lights)).LoadTopView_FunctionTop(function, actionRefresh); new System.Threading.Thread(() => { DriverLayer.Control.Ins.SendReadCommand(function); }) { IsBackground = true }.Start(); } /// /// 显示色温的快捷方式的弹窗 /// private void ShowColorTemperatrueShortcutView() { //整个灰色界面 var frameBack = new Dialog(); var dialogBody = new FrameLayout(); frameBack.AddChidren(dialogBody); dialogBody.MouseUpEventHandler = (sender, e) => { frameBack.Close(); }; frameBack.Show(); //白色的背景(用图片整的) var frameWhite = new FrameLayout(); frameWhite.X = Application.GetRealWidth(63); frameWhite.Y = Application.GetRealHeight(350); frameWhite.Width = Application.GetRealWidth(160); frameWhite.Height = Application.GetRealHeight(199); frameWhite.BackgroundImagePath = "FunctionIcon/Light/ColorTemperatrueQuickBack.png"; frameBack.AddChidren(frameWhite); //快捷调节 var btnAdjust = new Button(); btnAdjust.X = Application.GetRealWidth(24); btnAdjust.Y = Application.GetRealHeight(19); btnAdjust.Width = Application.GetRealWidth(80); btnAdjust.Height = Application.GetRealHeight(24); btnAdjust.TextID = StringId.QuickAdjustment; btnAdjust.TextColor = CSS_Color.FirstLevelTitleColor; btnAdjust.TextSize = CSS_FontSize.SubheadingFontSize; frameWhite.AddChidren(btnAdjust); //线 var btnLine = new Button(); btnLine.Y = btnAdjust.Bottom + Application.GetRealHeight(9); btnLine.Height = 1; btnLine.Width = Application.GetRealWidth(112); btnLine.Gravity = Gravity.CenterHorizontal; btnLine.BackgroundColor = CSS_Color.BackgroundColor; frameWhite.AddChidren(btnLine); //温馨图标 var btnCozyIcon = new Button(); btnCozyIcon.X = Application.GetRealWidth(24); btnCozyIcon.Y = btnLine.Bottom + Application.GetRealHeight(10); btnCozyIcon.Width = Application.GetRealWidth(24); btnCozyIcon.Height = Application.GetRealWidth(24); btnCozyIcon.UnSelectedImagePath = "FunctionIcon/Light/CozyIcon.png"; btnCozyIcon.SelectedImagePath = "FunctionIcon/Light/CozyIconOn.png"; frameWhite.AddChidren(btnCozyIcon); btnCozyIcon.MouseUpEventHandler += (sender, e) => { barColorTemplatrue.Progress = 27; function.SetAttrState(FunctionAttributeKey.CCT, barColorTemplatrue.Progress * 100); barColorTemplatrue.SetCustomText((barColorTemplatrue.Progress * 100) + "K"); frameBack.Close(); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/CozyIconOn.png"; }; //温馨 2700k var btnCozy = new Button(); btnCozy.X = btnCozyIcon.Right + Application.GetRealWidth(12); btnCozy.Y = btnCozyIcon.Y; btnCozy.Width = Application.GetRealWidth(100); btnCozy.Height = Application.GetRealWidth(24); btnCozy.Text = Language.StringByID(StringId.Cozy) + " 2700K"; btnCozy.TextSize = CSS_FontSize.TextFontSize; btnCozy.TextColor = CSS_Color.FirstLevelTitleColor; btnCozy.SelectedTextColor = CSS_Color.MainColor; btnCozy.TextAlignment = TextAlignment.CenterLeft; frameWhite.AddChidren(btnCozy); btnCozy.MouseUpEventHandler += (sender, e) => { barColorTemplatrue.Progress = 27; function.SetAttrState(FunctionAttributeKey.CCT, barColorTemplatrue.Progress * 100); barColorTemplatrue.SetCustomText((barColorTemplatrue.Progress * 100) + "K"); frameBack.Close(); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); barColorTemplatrue.Progress = 27; barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K"); frameBack.Close(); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/CozyIconOn.png"; }; //会客图标 var btnMeetIcon = new Button(); btnMeetIcon.X = Application.GetRealWidth(24); btnMeetIcon.Y = btnCozyIcon.Bottom + Application.GetRealHeight(20); btnMeetIcon.Width = Application.GetRealWidth(24); btnMeetIcon.Height = Application.GetRealWidth(24); btnMeetIcon.UnSelectedImagePath = "FunctionIcon/Light/MeetingGuestsIcon.png"; btnMeetIcon.SelectedImagePath = "FunctionIcon/Light/MeetingGuestsIconOn.png"; frameWhite.AddChidren(btnMeetIcon); btnMeetIcon.MouseUpEventHandler += (sender, e) => { barColorTemplatrue.Progress = 30; function.SetAttrState(FunctionAttributeKey.CCT, barColorTemplatrue.Progress * 100); barColorTemplatrue.SetCustomText((barColorTemplatrue.Progress * 100) + "K"); frameBack.Close(); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/MeetingGuestsIconOn.png"; }; //会客 3000k var btnMeet = new Button(); btnMeet.X = btnMeetIcon.Right + Application.GetRealWidth(12); btnMeet.Y = btnMeetIcon.Y; btnMeet.Width = Application.GetRealWidth(100); btnMeet.Height = Application.GetRealWidth(24); btnMeet.Text = Language.StringByID(StringId.MeetingGuests) + " 3000K"; btnMeet.TextSize = CSS_FontSize.TextFontSize; btnMeet.TextColor = CSS_Color.FirstLevelTitleColor; btnMeet.SelectedTextColor = CSS_Color.MainColor; btnMeet.TextAlignment = TextAlignment.CenterLeft; frameWhite.AddChidren(btnMeet); btnMeet.MouseUpEventHandler += (sender, e) => { barColorTemplatrue.Progress = 30; function.SetAttrState(FunctionAttributeKey.CCT, barColorTemplatrue.Progress * 100); barColorTemplatrue.SetCustomText((barColorTemplatrue.Progress * 100) + "K"); frameBack.Close(); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/MeetingGuestsIconOn.png"; }; //阅读图标 var btnReadIcon = new Button(); btnReadIcon.X = Application.GetRealWidth(24); btnReadIcon.Y = btnMeetIcon.Bottom + Application.GetRealHeight(20); btnReadIcon.Width = Application.GetRealWidth(24); btnReadIcon.Height = Application.GetRealWidth(24); btnReadIcon.UnSelectedImagePath = "FunctionIcon/Light/ReadIcon.png"; btnReadIcon.SelectedImagePath = "FunctionIcon/Light/ReadIconOn.png"; frameWhite.AddChidren(btnReadIcon); btnReadIcon.MouseUpEventHandler += (sender, e) => { barColorTemplatrue.Progress = 65; function.SetAttrState(FunctionAttributeKey.CCT, barColorTemplatrue.Progress * 100); barColorTemplatrue.SetCustomText((barColorTemplatrue.Progress * 100) + "K"); frameBack.Close(); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/ReadIconOn.png"; }; //阅读 6500k var btnRead = new Button(); btnRead.X = btnReadIcon.Right + Application.GetRealWidth(12); btnRead.Y = btnReadIcon.Y; btnRead.Width = Application.GetRealWidth(100); btnRead.Height = Application.GetRealWidth(24); btnRead.Text = Language.StringByID(StringId.Reading) + " 6500K"; btnRead.TextSize = CSS_FontSize.TextFontSize; btnRead.TextColor = CSS_Color.FirstLevelTitleColor; btnRead.SelectedTextColor = CSS_Color.MainColor; btnRead.TextAlignment = TextAlignment.CenterLeft; frameWhite.AddChidren(btnRead); btnRead.MouseUpEventHandler += (sender, e) => { barColorTemplatrue.Progress = 65; function.SetAttrState(FunctionAttributeKey.CCT, barColorTemplatrue.Progress * 100); barColorTemplatrue.SetCustomText((barColorTemplatrue.Progress * 100) + "K"); frameBack.Close(); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/ReadIconOn.png"; }; btnCozy.IsSelected = false; btnCozyIcon.IsSelected = false; btnMeet.IsSelected = false; btnMeetIcon.IsSelected = false; btnRead.IsSelected = false; btnReadIcon.IsSelected = false; if (function.GetAttrState(FunctionAttributeKey.CCT) == "2700") { btnCozy.IsSelected = true; btnCozyIcon.IsSelected = true; } if (function.GetAttrState(FunctionAttributeKey.CCT) == "3000") { btnMeet.IsSelected = true; btnMeetIcon.IsSelected = true; } if (function.GetAttrState(FunctionAttributeKey.CCT) == "6500") { btnRead.IsSelected = true; btnReadIcon.IsSelected = true; } } } /// /// 左右滑动的进度条控件 /// public class CCTSeekBarControl : DiyImageSeekBar { #region ■ 变量声明___________________________ /// /// 进度值改变,如果要设置初始进度值,此变量要在设置初始进度值之前进行设置(第一个参数0:滑动的时候,1:手指弹起的时候) /// public Action ProgressChangedEvent = null; /// /// 进度条可用时的背景色 /// private uint ProgressBarEnableColor = 0; /// /// 进度条不可用时的背景色(默认灰色) /// public uint ProgressBarUnEnableColor = 0xffe8e8e8; /// /// 当前可用状态 /// private bool nowEnable = true; /// /// 控件能否使用 /// public new bool Enable { set { //状态没有改变 if (nowEnable == value) { return; } nowEnable = value; this.IsClickable = value; if (value == true) { //原来的颜色 base.ProgressBarColor = ProgressBarEnableColor; } else { //灰色 base.ProgressBarColor = ProgressBarUnEnableColor; } } } /// /// 进度条颜色 /// public new uint ProgressBarColor { set { ProgressBarEnableColor = value; base.ProgressBarColor = value; } } private int m_SeekBarPadding = Application.GetRealWidth(20); /// /// 进度条与左右两边的边框的边距(重写底层属性) /// public new int SeekBarPadding { set { m_SeekBarPadding = value; base.SeekBarPadding = value; } } private int m_MaxValue = 0; /// /// 进度条最大值(重写底层属性) /// public new int MaxValue { set { m_MaxValue = value; base.MaxValue = value; } } private int m_MinValue = 0; /// /// 进度条最小值(重写底层属性) /// public new int MinValue { set { m_MinValue = value; base.MinValue = value; } } /// /// 上方显示的文本 /// private Button btnTopView = null; #endregion #region ■ 初始化_____________________________ /// /// 左右滑动的进度条控件 /// /// 宽度,非真实值 public CCTSeekBarControl(int i_width = 210) { ProgressChangeDelayTime = 30; this.Width = Application.GetRealWidth(i_width); this.Height = Application.GetRealHeight(54); //圆球的宽度 this.ThumbImageHeight = Application.GetRealHeight(54); this.ThumbImagePath = "Public/ThumbImage.png"; //进度条的宽度 this.SeekBarViewHeight = Application.GetRealHeight(8); //上方是否显示文本 this.IsProgressTextShow = false; this.Gravity = Gravity.CenterHorizontal; //进度条颜色 this.ProgressBarColor = CSS_Color.MainColor; //左右边距 this.SeekBarPadding = Application.GetRealWidth(20); //进度条值改变事件 this.OnProgressChangedEvent += this.MyProgressChangedEvent; //手指弹起事件 this.OnStopTrackingTouchEvent += this.MyStopTrackingTouchEvent; } #endregion #region ■ 事件_______________________________ /// /// 进度条值改变事件 /// /// /// private void MyProgressChangedEvent(object sender, int value) { if (this.ProgressChangedEvent == null) { this.OnProgressChangedEvent -= this.MyProgressChangedEvent; return; } this.ProgressChangedEvent(0, value); } /// /// 手指弹起事件 /// /// /// private void MyStopTrackingTouchEvent(object sender, int value) { if (this.ProgressChangedEvent == null) { this.OnStopTrackingTouchEvent -= this.MyStopTrackingTouchEvent; return; } //弹起事件不需要判断时间 this.ProgressChangedEvent(1, value); } #endregion #region ■ 自定义上方显示文本_________________ /// /// 在上方显示自定义文本 /// /// 宽度(真实值) /// 文字大小 /// 文字颜色 public void ShowCustomTextView(int i_width, int textSize, uint textColor) { if (this.btnTopView != null) { return; } int contrHeight = Application.GetRealHeight(24); this.btnTopView = new Button(); btnTopView.Width = i_width; btnTopView.Height = contrHeight; btnTopView.TextColor = textColor; btnTopView.TextSize = textSize; btnTopView.TextAlignment = TextAlignment.Center; btnTopView.Y = this.Y - contrHeight + Application.GetRealHeight(20); //初始化时,X轴可以不用理会 this.Parent.AddChidren(btnTopView); } /// /// 设置自定义文本信息 /// /// public void SetCustomText(string i_text) { if (this.btnTopView == null) { return; } this.btnTopView.Text = i_text; //滑条最左边的距离 int XX = this.X + this.m_SeekBarPadding; //当前滑条所在的大致百分比 int tempValue = this.Progress - this.m_MinValue; if (tempValue < 0) { tempValue = 0; } decimal persent = (decimal)tempValue / (this.m_MaxValue - this.m_MinValue); //当前滑条所在的大致位置 XX += (int)((this.Width - this.m_SeekBarPadding * 2) * persent); //因为要居中,所以减掉自定义控件的宽度的一般 XX = XX - this.btnTopView.Width / 2; this.btnTopView.X = XX; } #endregion #region ■ 一般方法___________________________ /// /// 控件摧毁 /// public override void RemoveFromParent() { this.ProgressChangedEvent = null; base.RemoveFromParent(); } #endregion } }