using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter { /// /// 界面类型的进度条控件 /// public class ProgressFormBar { #region ■ 变量声明___________________________ /// /// 界面类型的进度条控件 /// private static ProgressFormBar m_Current = null; /// /// 界面类型的进度条控件 /// public static ProgressFormBar Current { get { if (m_Current == null) { m_Current = new ProgressFormBar(); } return m_Current; } } /// /// 容器控件 /// private FrameLayout bodyFrameLayout = null; /// /// 信息控件 /// private NormalViewControl btnText = null; /// /// 进度值文本的显示控件 /// private NormalViewControl btnProgressView = null; /// /// 进度值能够移动的那个框控件 /// private FrameLayout frameProgress = null; /// /// 进度条 /// private FrameLayout btnProgressBar = null; /// /// 进度条容器的最大宽度 /// private int ProRowWidth = 0; /// /// 原来的滑动标识 /// private bool oldScrollEnabled = false; /// /// 原来的那个圆形进度条是否可见 /// private bool oldPrigressVisible = false; #endregion #region ■ 初始化_____________________________ /// /// 初始化进度条 /// private void InitProgressFormBar() { //安卓可以点击系统的返回键 this.oldScrollEnabled = UserView.HomePage.Instance.ScrollEnabled; UserView.HomePage.Instance.ScrollEnabled = false; Shared.Common.CommonPage.BackKeyCanClick = false; this.oldPrigressVisible = Common.CommonPage.Loading.Visible; if (oldPrigressVisible == true) { //圆形进度条临时关闭 Common.CommonPage.Loading.Hide(); } //容器 bodyFrameLayout = new FrameLayout(); bodyFrameLayout.BackgroundColor = UserCenterColor.Current.DialogBackColor; Common.CommonPage.Instance.AddChidren(bodyFrameLayout); var frameBack = new FrameLayout(); frameBack.Width = Application.GetRealWidth(674); frameBack.Height = Application.GetRealHeight(386); frameBack.BackgroundColor = UserCenterColor.Current.White; frameBack.Gravity = Gravity.CenterHorizontal; frameBack.Y = Application.GetRealHeight(683); frameBack.Radius = 6; bodyFrameLayout.AddChidren(frameBack); //进度显示文本 this.btnText = new NormalViewControl(frameBack.Width, Application.GetRealHeight(58), false); btnText.Y = Application.GetRealHeight(248); btnText.TextColor = UserCenterColor.Current.TextGrayColor1; btnText.TextAlignment = TextAlignment.Center; frameBack.AddChidren(btnText); //进度条 var btnProRow = new FrameLayout(); btnProRow.Gravity = Gravity.CenterHorizontal; btnProRow.Y = Application.GetRealHeight(161); btnProRow.Width = Application.GetRealWidth(559); btnProRow.Height = Application.GetRealHeight(29); btnProRow.BackgroundColor = 0xfff5f5f5; btnProRow.Radius = (uint)Application.GetRealHeight(29) / 2; frameBack.AddChidren(btnProRow); this.btnProgressBar = new FrameLayout(); btnProgressBar.Width = 0; btnProgressBar.Height = btnProRow.Height; btnProgressBar.Radius = btnProRow.Radius; btnProgressBar.BackgroundColor = 0xfffb744a; btnProgressBar.Radius = (uint)Application.GetRealHeight(29) / 2; btnProRow.AddChidren(btnProgressBar); //进度值文本 this.frameProgress = new FrameLayout(); frameProgress.Width = Application.GetRealWidth(84); frameProgress.Height = Application.GetRealHeight(60); frameProgress.Y = Application.GetRealHeight(86); frameBack.AddChidren(frameProgress); frameProgress.X = btnProRow.X + btnProgressBar.Right - frameProgress.Width / 2; var btnProgressPic = new PicViewControl(84, 60); btnProgressPic.UnSelectedImagePath = "Item/ProgressMsg.png"; frameProgress.AddChidren(btnProgressPic); this.btnProgressView = new NormalViewControl(84, 32, true); btnProgressView.TextSize = 10; btnProgressView.TextAlignment = TextAlignment.Center; btnProgressView.Text = "0%"; frameProgress.AddChidren(btnProgressView); this.ProRowWidth = btnProRow.Width; } #endregion #region ■ 设置信息___________________________ /// /// 设置显示信息 /// /// public void SetMsg(string msg) { HdlThreadLogic.Current.RunMain(() => { btnText.Text = msg; }); } #endregion #region ■ 设置进度值_________________________ /// /// 设置进度值 /// /// 此值为百分比值(也就是小于或者等于1的) public void SetValue(decimal value) { this.SetValueEx(value); } /// /// 设置进度值 /// /// 进度值,内部会除以maxValue /// 最大值 public void SetValue(decimal value, decimal maxValue) { decimal result = value / maxValue; this.SetValueEx(result); } /// /// 设置进度值 /// /// private void SetValueEx(decimal value) { if (btnProgressBar == null) { return; } HdlThreadLogic.Current.RunMain(() => { int width = (int)(value * ProRowWidth); btnProgressBar.Width = width; //文本显示 btnProgressView.Text = ((int)(value * 100)) + "%"; //文本显示的那个图片框移动 frameProgress.X = ControlCommonResourse.XXLeft + btnProgressBar.Right - frameProgress.Width / 2; }); } #endregion #region ■ 开启进度条_________________________ /// /// 开启进度条 /// public void Start() { if (this.bodyFrameLayout == null) { HdlThreadLogic.Current.RunMain(() => { //初始化进度条 this.InitProgressFormBar(); }); } } #endregion #region ■ 关闭进度条_________________________ /// /// 关闭进度条 /// public void Close() { HdlThreadLogic.Current.RunMain(() => { if (this.oldScrollEnabled == true) { //如果它原来就是不可以滑动的话,不处理 UserView.HomePage.Instance.ScrollEnabled = true; } Shared.Common.CommonPage.BackKeyCanClick = true; if (this.oldPrigressVisible == true) { //如果原来的进度条是可见的话,还原回去 Common.CommonPage.Loading.Start(Common.CommonPage.Loading.Text); } bodyFrameLayout?.RemoveFromParent(); bodyFrameLayout = null; btnText = null; btnProgressView = null; frameProgress = null; btnProgressBar = null; }); } #endregion } }