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()
{
var nowForm = UserView.HomePage.Instance.GetChildren(UserView.HomePage.Instance.ChildrenCount - 1);
if (nowForm == null || (nowForm is ViewGroup) == false)
{
//这种情况应该不存在
var alert = new ShowMsgControl(ShowMsgType.Error, "ERROR:Not Found The ActionForm!");
alert.Show();
return;
}
//安卓可以点击系统的返回键
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;
((ViewGroup)nowForm).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
}
}