using System;
using Shared.IOS.TBL;
namespace Shared
{
///
/// HDLArcSeekBar 控件
///
public class ArcSeekBar : View
{
///
/// 当前视图
///
/// The HDLArcSeekBar.
HDLArcSeekbar mHDLArcSeekBar
{
get
{
return uiView as HDLArcSeekbar;
}
set
{
uiView = value;
}
}
///
/// 构造函数
///
public ArcSeekBar()
{
mHDLArcSeekBar = new HDLArcSeekbar
{
MProgressChangedDelegate = new OnProgressChangeListener(this)
};
//mHDLArcSeekBar.SetOpenAngle()
}
public int Angle
{
set {
mHDLArcSeekBar.SetOpenAngle(value);
mHDLArcSeekBar.SetNeedsDisplay();
}
}
///
/// 刷新布局
///
private void RefreshFrame()
{
mHDLArcSeekBar.InitWithFrameArc(new CoreGraphics.CGRect(base.X, base.Y, base.Width, base.Height));
}
///
/// 控件宽度
///
public override int Width
{
get
{
return base.Width;
}
set
{
base.Width = value;
RefreshFrame();
}
}
///
/// 控件的高度
///
public override int Height
{
get
{
return base.Height;
}
set
{
base.Height = value;
RefreshFrame();
}
}
///
/// 控件的X坐标
///
public override int X
{
get
{
return base.X;
}
set
{
base.X = value;
RefreshFrame();
}
}
///
/// 控件的X坐标
///
public override int Y
{
get
{
return base.Y;
}
set
{
base.Y = value;
RefreshFrame();
}
}
///
/// 进度值显示单位
///
/// 单位字符
public String ProgressBarUnitSring
{
set
{
mHDLArcSeekBar.SetProgressBarUnitSring(value);
}
}
int minValue = 0;
int maxValue = 100;
///
/// 进度值最大值
///
/// 最大值
public int MaxValue
{
set
{
maxValue = value;
mHDLArcSeekBar.SetMinAndMaxValue(minValue, maxValue);
}
}
///
/// 进度值最小值
///
/// 最小值
public int MinValue
{
set
{
minValue = value;
mHDLArcSeekBar.SetMinAndMaxValue(minValue, maxValue);
}
}
///
/// 当前进度值
///
/// 进度值
public int Progress
{
set
{
mHDLArcSeekBar.SetProgress(value);
}
get
{
return (int)mHDLArcSeekBar.MProgressCurrentValue;
}
}
///
/// 同时设置圆弧和拖动圆形的宽
///
/// 宽
public int ArcWidthWithDefaultStyle
{
set
{
mHDLArcSeekBar.MArcWidth = value;
}
}
///
/// 圆弧默认背景颜色
///
/// 背景颜色
public uint ArcColor
{
set
{
byte r, g, b, a;
r = (byte)(value / 256 / 256 % 256);
g = (byte)(value / 256 % 256);
b = (byte)(value % 256);
a = (byte)(value / 256 / 256 / 256 % 256);
mHDLArcSeekBar.MArcBackBarColor = UIKit.UIColor.FromRGBA(r, g, b, a);
}
}
///
/// 进度条颜色 单一颜色不渐变
///
/// 单一进度条颜色
public uint ProgressBarColor
{
set
{
//mHDLArcSeekBar.SetProgressBarColor(value);
byte r, g, b, a;
r = (byte)(value / 256 / 256 % 256);
g = (byte)(value / 256 % 256);
b = (byte)(value % 256);
a = (byte)(value / 256 / 256 / 256 % 256);
mHDLArcSeekBar.SetProgressBarColor(UIKit.UIColor.FromRGBA(r, g, b, a));
}
}
uint thumbColor = 0xFFFFFFFF;
///
/// 拖动按钮圆形颜色
///
/// 拖动按钮颜色
public uint ThumbColor
{
get
{
return thumbColor;
}
set
{
thumbColor = value;
byte r, g, b, a;
r = (byte)(thumbColor / 256 / 256 % 256);
g = (byte)(thumbColor / 256 % 256);
b = (byte)(thumbColor % 256);
a = (byte)(thumbColor / 256 / 256 / 256 % 256);
mHDLArcSeekBar.MThumbColor = UIKit.UIColor.FromRGBA(r, g, b, a);
}
}
///
/// 拖动按钮默认形状 填满实心或者空心
///
/// 是否填满
public bool ThumbModeFill
{
set
{
if (value)
{
mHDLArcSeekBar.MThumbMode = IOS.TBL.HDLThumbMode.Fill;
}
else
{
mHDLArcSeekBar.MThumbMode = IOS.TBL.HDLThumbMode.Stroke;
}
}
}
///
/// 拖动按钮圆形半径
///
/// 半径
public int ThumbRadius
{
set
{
mHDLArcSeekBar.MThumbWidth = value * 2;//设置直径
}
}
///
/// 圆弧宽
///
/// 宽
public int ArcWidth
{
set
{
mHDLArcSeekBar.MArcWidth = value;
}
}
///
/// 当前进度值显示的文字颜色
///
/// 文字颜色
public uint ProgressTextColor
{
set
{
byte r, g, b, a;
r = (byte)(value / 256 / 256 % 256);
g = (byte)(value / 256 % 256);
b = (byte)(value % 256);
a = (byte)(value / 256 / 256 / 256 % 256);
mHDLArcSeekBar.MProgressTextColor = UIKit.UIColor.FromRGBA(r, g, b, a);
}
}
///
/// 当前进度值显示的文字大小
///
/// 文字大小
public int ProgressTextSize
{
set
{
mHDLArcSeekBar.MProgressTextSize = value;
}
}
///
/// 是否可以滑动
///
/// 是否可以滑动
public bool IsClickable
{
set
{
mHDLArcSeekBar.IsClickable = value;
}
}
///
/// 设置进度条 渐变颜色的开始颜色和结束颜色
///
/// 开始颜色、结束颜色
public void SetProgressBarColors(uint startColor, uint endColor)
{
byte r, g, b, a;
r = (byte)(startColor / 256 / 256 % 256);
g = (byte)(startColor / 256 % 256);
b = (byte)(startColor % 256);
a = (byte)(startColor / 256 / 256 / 256 % 256);
var start = UIKit.UIColor.FromRGBA(r, g, b, a);
byte r2, g2, b2, a2;
r2 = (byte)(endColor / 256 / 256 % 256);
g2 = (byte)(endColor / 256 % 256);
b2 = (byte)(endColor % 256);
a2 = (byte)(endColor / 256 / 256 / 256 % 256);
var end = UIKit.UIColor.FromRGBA(r2, g2, b2, a2);
mHDLArcSeekBar.SetProgressBarColors(start, end);
}
///
/// EventHandler
///
public EventHandler OnProgressChangedEvent;
public EventHandler OnStartTrackingTouchEvent;
public EventHandler OnStopTrackingTouchEvent;
/////
///// OnProgressChangeListener 继承响应事件
/////
OnProgressChangeListener mOnProgressChangeListener;
public class OnProgressChangeListener : HDLArcSeekbarProgressChangedDelegate
{
[Weak] ArcSeekBar _ArcSeekBar;
public OnProgressChangeListener(ArcSeekBar view)
{
_ArcSeekBar = view;
}
public override void OnProgressChanged(int mProgress)
{
_ArcSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress);
}
public override void OnStartTrackingTouch()
{
_ArcSeekBar.OnStartTrackingTouchEvent?.Invoke(this, true);
}
public override void OnStopTrackingTouch(int mProgress)
{
_ArcSeekBar.OnStopTrackingTouchEvent?.Invoke(this, mProgress);
}
}
}
}