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;
///
/// 色温的滑动控件
///
SeekBarControl 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.IsOthreShare)
{
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 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 = "2700K";
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 SeekBarControl();
barColorTemplatrue.X = btnTempClolorMin.Right;
barColorTemplatrue.Y = Application.GetRealHeight(340);
barColorTemplatrue.MinValue = 27;
barColorTemplatrue.MaxValue = 65;
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 = "6500K";
btnTempClolorMax.TextAlignment = TextAlignment.CenterLeft;
btnTempClolorMax.TextColor = CSS_Color.PromptingColor1;
btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
controlView.AddChidren(btnTempClolorMax);
#endregion
#region 渐变时间调节
//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 = function.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;
}
}
///
/// 左右滑动的进度条控件
///
private class SeekBarControl : 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 SeekBarControl(int i_width = 210)
{
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
}
}
}