using ZigBee.Device; using System; using System.Collections.Generic; using System.Text; using Shared.Phone.UserCenter; namespace Shared.Phone.MainPage.ControlForm { /// /// 温湿度传感器的深度卡片界面 /// public class DeviceTemperatureHumidityDetailCardForm : DeviceDetailCardCommonForm { #region ■ 变量声明___________________________ /// /// 值显示控件 /// private NormalViewControl btnValue = null; /// /// 单位控件 /// private NormalViewControl btnUnit = null; /// /// 图片控件的宽度 /// private int picContrWidth = 0; #endregion #region ■ 初始化_____________________________ /// /// 底层初始化中部控件完成之后 /// /// public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack) { //图片控件的宽度 this.picContrWidth = this.GetPictrueRealSize(380); //左滑不能 this.ScrollEnabled = false; //湿度 if (((TemperatureSensor)this.device).SensorDiv == 2) { this.InitHumidityControl(frameWhiteBack); } //温度 else if (((TemperatureSensor)this.device).SensorDiv == 1) { this.InitTemperatureControl(frameWhiteBack); } //查看历史记录 var btnHistory = new NormalViewControl(207, 50, true); btnHistory.Y = Application.GetRealHeight(1094); btnHistory.TextSize = 12; btnHistory.TextAlignment = TextAlignment.Center; btnHistory.TextColor = UserCenterColor.Current.TextOrangeColor; btnHistory.Text = Language.StringByID(R.MyInternationalizationString.CheckAirQualitySensorHistory); btnHistory.Width = btnHistory.GetRealWidthByText(); btnHistory.Gravity = Gravity.CenterHorizontal; frameWhiteBack.AddChidren(btnHistory); //底线 var btnLine = new NormalViewControl(btnHistory.Width, ControlCommonResourse.BottomLineHeight, false); btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; btnLine.Gravity = Gravity.CenterHorizontal; btnLine.Y = btnHistory.Bottom - Application.GetRealHeight(8); frameWhiteBack.AddChidren(btnLine); btnHistory.ButtonClickEvent += (sender, e) => { //查看历史记录事件 var form = new DeviceTemperatureHistoryForm(); form.AddForm(this.device); }; } #endregion #region ■ 初始化湿度界面_____________________ /// /// 初始化湿度界面 /// /// private void InitHumidityControl(FrameLayout frameWhiteBack) { //湿度容器 var frameHumidityPic = new FrameLayout(); frameHumidityPic.Y = Application.GetRealHeight(351); frameHumidityPic.Width = picContrWidth; frameHumidityPic.Height = this.GetPictrueRealSize(426); frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png"; frameHumidityPic.Gravity = Gravity.CenterHorizontal; frameWhiteBack.AddChidren(frameHumidityPic); //湿度文本 var btnHumidityText = new NormalViewControl(frameHumidityPic.Width, Application.GetRealHeight(60), false); btnHumidityText.Y = Application.GetRealHeight(58); btnHumidityText.TextID = R.MyInternationalizationString.Humidity; btnHumidityText.TextColor = UserCenterColor.Current.White; btnHumidityText.TextAlignment = TextAlignment.Center; frameHumidityPic.AddChidren(btnHumidityText); //湿度数据 this.btnValue = new NormalViewControl(193, 120, true); btnValue.Y = Application.GetRealHeight(214); btnValue.Text = ((TemperatureSensor)this.device).currentHumidity.ToString(); btnValue.TextSize = 38; btnValue.TextColor = UserCenterColor.Current.White; btnValue.IsBold = true; btnValue.TextAlignment = TextAlignment.BottomCenter; btnValue.Width = btnValue.GetRealWidthByText(); frameHumidityPic.AddChidren(btnValue); //湿度单位 this.btnUnit = new NormalViewControl(60, 100, true); btnUnit.X = btnValue.Right; btnUnit.Y = btnValue.Y; btnUnit.Text = "%"; btnUnit.TextSize = 17; btnUnit.TextColor = UserCenterColor.Current.White; btnUnit.TextAlignment = TextAlignment.BottomLeft; btnUnit.IsBold = true; frameHumidityPic.AddChidren(btnUnit); //刷新值和单位控件的坐标位置 this.RefreshValueAndUintLocation(); } #endregion #region ■ 初始化温度界面_____________________ /// /// 初始化温度界面 /// /// private void InitTemperatureControl(FrameLayout frameWhiteBack) { //温度容器 var frameHumidityPic = new FrameLayout(); frameHumidityPic.Y = Application.GetRealHeight(351); frameHumidityPic.Width = picContrWidth; frameHumidityPic.Height = this.GetPictrueRealSize(426); frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png"; frameHumidityPic.Gravity = Gravity.CenterHorizontal; frameWhiteBack.AddChidren(frameHumidityPic); //温度文本 var btnTemperatureText = new NormalViewControl(frameHumidityPic.Width, Application.GetRealHeight(60), false); btnTemperatureText.Y = Application.GetRealHeight(58); btnTemperatureText.TextID = R.MyInternationalizationString.Temperature; btnTemperatureText.TextColor = UserCenterColor.Current.White; btnTemperatureText.TextAlignment = TextAlignment.Center; frameHumidityPic.AddChidren(btnTemperatureText); //温度数据 this.btnValue = new NormalViewControl(193, 120, true); btnValue.Y = Application.GetRealHeight(214); btnValue.Text = ((TemperatureSensor)this.device).currentTemperature.ToString(); btnValue.TextSize = 38; btnValue.TextColor = UserCenterColor.Current.White; btnValue.IsBold = true; btnValue.TextAlignment = TextAlignment.BottomCenter; btnValue.Width = btnValue.GetRealWidthByText(); frameHumidityPic.AddChidren(btnValue); //温度单位 this.btnUnit = new NormalViewControl(60, 100, true); btnUnit.X = btnValue.Right; btnUnit.Y = btnValue.Y; btnUnit.Text = "℃"; btnUnit.TextSize = 17; btnUnit.TextColor = UserCenterColor.Current.White; btnUnit.TextAlignment = TextAlignment.BottomLeft; btnUnit.IsBold = true; frameHumidityPic.AddChidren(btnUnit); //刷新值和单位控件的坐标位置 this.RefreshValueAndUintLocation(); } #endregion #region ■ 是否获取网关反馈的结果_____________ /// /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport) /// /// 命令区分 /// 上报数据 /// public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report) { if (comandDiv == ReceiveComandDiv.A设备属性上报) { HdlThreadLogic.Current.RunMain(() => { //湿度 if (((TemperatureSensor)this.device).SensorDiv == 2) { this.btnValue.Text = ((TemperatureSensor)this.device).currentHumidity.ToString(); } //温度 else if (((TemperatureSensor)this.device).SensorDiv == 1) { this.btnValue.Text = ((TemperatureSensor)this.device).currentTemperature.ToString(); } //刷新值和单位控件的坐标位置 this.RefreshValueAndUintLocation(); }); return true; } return false; } #endregion #region ■ 一般方法___________________________ /// /// 刷新值和单位控件的坐标位置 /// private void RefreshValueAndUintLocation() { this.btnValue.Width = this.btnValue.GetRealWidthByText(); int xx = (this.picContrWidth - (this.btnUnit.Width + this.btnValue.Width)) / 2; this.btnValue.X = xx; this.btnUnit.X = this.btnValue.Right; } #endregion } }