using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone
|
{
|
/// <summary>
|
/// 界面类型的进度条控件
|
/// </summary>
|
public class ProgressFormBar
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 界面类型的进度条控件
|
/// </summary>
|
private static ProgressFormBar m_Current = null;
|
/// <summary>
|
/// 界面类型的进度条控件
|
/// </summary>
|
public static ProgressFormBar Current
|
{
|
get
|
{
|
if (m_Current == null)
|
{
|
m_Current = new ProgressFormBar();
|
}
|
return m_Current;
|
}
|
}
|
/// <summary>
|
/// 消息控件单击的事件
|
/// </summary>
|
public Action MsgClickEvent = null;
|
/// <summary>
|
/// 界面关闭的事件
|
/// </summary>
|
public Action CloseEvent = null;
|
/// <summary>
|
/// 容器控件
|
/// </summary>
|
private FrameLayout bodyFrameLayout = null;
|
/// <summary>
|
/// 信息控件
|
/// </summary>
|
private NormalViewControl btnText = null;
|
/// <summary>
|
/// 标题控件
|
/// </summary>
|
private NormalViewControl btnTitle = null;
|
/// <summary>
|
/// 进度条控件
|
/// </summary>
|
private ProgressRowBar btnProgressBar = null;
|
/// <summary>
|
/// 原来的滑动标识
|
/// </summary>
|
private bool oldScrollEnabled = false;
|
/// <summary>
|
/// 原来的那个圆形进度条是否可见
|
/// </summary>
|
private bool oldPrigressVisible = false;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 初始化进度条
|
/// </summary>
|
private void InitProgressFormBar(bool i_hadTitle)
|
{
|
//拥有标题时,扩大的高度
|
int titleValue = 40;
|
|
//安卓可以点击系统的返回键
|
this.oldScrollEnabled = UserView.HomePage.Instance.ScrollEnabled;
|
UserView.HomePage.Instance.ScrollEnabled = false;
|
Common.Config.Instance.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();
|
if (i_hadTitle == false)
|
{
|
frameBack.Y = Application.GetRealHeight(683);
|
frameBack.Height = Application.GetRealHeight(386);
|
}
|
else
|
{
|
frameBack.Y = Application.GetRealHeight(683 + titleValue / 2);
|
frameBack.Height = Application.GetRealHeight(386 + titleValue);
|
}
|
frameBack.Width = Application.GetRealWidth(674);
|
frameBack.BackgroundColor = UserCenterColor.Current.White;
|
frameBack.Gravity = Gravity.CenterHorizontal;
|
frameBack.Radius = (uint)Application.GetRealHeight(17);
|
bodyFrameLayout.AddChidren(frameBack);
|
|
//进度显示文本
|
this.btnTitle = new NormalViewControl(frameBack.Width, Application.GetRealHeight(58), false);
|
btnTitle.Y = Application.GetRealHeight(40);
|
btnTitle.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnTitle.TextAlignment = TextAlignment.Center;
|
frameBack.AddChidren(btnTitle);
|
|
//进度显示文本
|
this.btnText = new NormalViewControl(frameBack.Width, Application.GetRealHeight(58), false);
|
if (i_hadTitle == false)
|
{
|
btnText.Y = Application.GetRealHeight(248);
|
}
|
else
|
{
|
btnText.Y = Application.GetRealHeight(248 + titleValue);
|
}
|
btnText.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnText.TextAlignment = TextAlignment.Center;
|
frameBack.AddChidren(btnText);
|
btnText.ButtonClickEvent += (sender, e) =>
|
{
|
this.MsgClickEvent?.Invoke();
|
};
|
|
//进度条
|
this.btnProgressBar = new ProgressRowBar(559, 29);
|
btnProgressBar.Gravity = Gravity.CenterHorizontal;
|
if (i_hadTitle == false)
|
{
|
btnProgressBar.Y = Application.GetRealHeight(161);
|
}
|
else
|
{
|
btnProgressBar.Y = Application.GetRealHeight(161 + titleValue);
|
}
|
frameBack.AddChidren(btnProgressBar);
|
btnProgressBar.StartMode1(true);
|
}
|
|
#endregion
|
|
#region ■ 设置信息___________________________
|
|
/// <summary>
|
/// 设置显示信息
|
/// </summary>
|
/// <param name="msg"></param>
|
public void SetMsg(string msg)
|
{
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
btnText.Text = msg;
|
}, ShowErrorMode.NO);
|
}
|
|
/// <summary>
|
/// 设置标题信息
|
/// </summary>
|
/// <param name="i_title"></param>
|
public void SetTitle(string i_title)
|
{
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
btnTitle.Text = i_title;
|
}, ShowErrorMode.NO);
|
}
|
|
#endregion
|
|
#region ■ 设置进度值_________________________
|
|
/// <summary>
|
/// 设置进度值
|
/// </summary>
|
/// <param name="value">此值为百分比值(也就是小于或者等于1的)</param>
|
public void SetValue(decimal value)
|
{
|
this.btnProgressBar?.SetValue(value);
|
}
|
|
/// <summary>
|
/// 设置进度值
|
/// </summary>
|
/// <param name="value">进度值,内部会除以maxValue</param>
|
/// <param name="maxValue">最大值</param>
|
public void SetValue(decimal value, decimal maxValue)
|
{
|
this.btnProgressBar?.SetValue(value, maxValue);
|
}
|
|
/// <summary>
|
/// 重置进度条,让它复位
|
/// </summary>
|
public void ResetProgressBar()
|
{
|
if (this.btnProgressBar != null)
|
{
|
btnProgressBar.ProgressBarGoback = true;
|
btnProgressBar.SetValue(0);
|
|
System.Threading.Thread.Sleep(500);
|
|
btnProgressBar.ProgressBarGoback = false;
|
}
|
}
|
|
#endregion
|
|
#region ■ 开启进度条_________________________
|
|
/// <summary>
|
/// 开启进度条
|
/// </summary>
|
/// <param name="i_hadTitle">是否拥有标题</param>
|
public void Start(bool i_hadTitle = false)
|
{
|
if (this.bodyFrameLayout == null)
|
{
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
//初始化进度条
|
this.InitProgressFormBar(i_hadTitle);
|
}, ShowErrorMode.NO);
|
}
|
}
|
|
#endregion
|
|
#region ■ 关闭进度条_________________________
|
|
/// <summary>
|
/// 关闭进度条
|
/// </summary>
|
public void Close()
|
{
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
if (this.oldScrollEnabled == true)
|
{
|
//如果它原来就是不可以滑动的话,不处理
|
UserView.HomePage.Instance.ScrollEnabled = true;
|
}
|
Common.Config.Instance.BackKeyCanClick = true;
|
if (this.oldPrigressVisible == true)
|
{
|
//如果原来的进度条是可见的话,还原回去
|
Common.CommonPage.Loading.Start(Common.CommonPage.Loading.Text);
|
}
|
|
bodyFrameLayout?.RemoveFromParent();
|
bodyFrameLayout = null;
|
btnText = null;
|
btnProgressBar = null;
|
this.MsgClickEvent = null;
|
//关闭事件
|
this.CloseEvent?.Invoke();
|
this.CloseEvent = null;
|
}, ShowErrorMode.NO);
|
}
|
|
#endregion
|
}
|
}
|