using System;
|
using Shared.IOS.TBL;
|
|
|
namespace Shared
|
{
|
|
/// <summary>
|
/// HDLWaveSeekbar 控件
|
/// </summary>
|
public class WaveSeekBar : BaseSeekBar
|
{
|
/// <summary>
|
/// 当前视图
|
/// </summary>
|
/// <value>The HDLWaveSeekbar.</value>
|
HDLWaveSeekbar mHDLWaveSeekbar
|
{
|
get
|
{
|
return uiView as HDLWaveSeekbar;
|
}
|
set
|
{
|
uiView = value;
|
}
|
}
|
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public WaveSeekBar()
|
{
|
mHDLWaveSeekbar = new HDLWaveSeekbar
|
{
|
MProgressChangedDelegate = new OnProgressChangeListener(this)
|
};
|
|
}
|
|
|
/// <summary>
|
/// 刷新布局
|
/// </summary>
|
private void RefreshFrame()
|
{
|
mHDLWaveSeekbar.InitWithFrameWaveSeekBar(new CoreGraphics.CGRect(base.X, base.Y, base.Width, base.Height));
|
}
|
|
/// <summary>
|
/// 控件宽度
|
/// </summary>
|
public override int Width
|
{
|
get
|
{
|
return base.Width;
|
}
|
set
|
{
|
base.Width = value;
|
RefreshFrame();
|
}
|
}
|
|
|
/// <summary>
|
/// 控件的高度
|
/// </summary>
|
public override int Height
|
{
|
get
|
{
|
return base.Height;
|
}
|
set
|
{
|
base.Height = value;
|
RefreshFrame();
|
|
}
|
}
|
|
/// <summary>
|
/// 控件的X坐标
|
/// </summary>
|
public override int X
|
{
|
get
|
{
|
return base.X;
|
}
|
set
|
{
|
base.X = value;
|
RefreshFrame();
|
}
|
}
|
|
|
/// <summary>
|
/// 控件的X坐标
|
/// </summary>
|
public override int Y
|
{
|
get
|
{
|
return base.Y;
|
}
|
set
|
{
|
base.Y = value;
|
RefreshFrame();
|
}
|
}
|
|
|
/// <summary>
|
/// 进度值显示单位
|
/// </summary>
|
/// <value>单位字符</value>
|
public String ProgressBarUnitSring
|
{
|
set
|
{
|
mHDLWaveSeekbar.SetProgressBarUnitSring(value);
|
}
|
}
|
|
int minValue = 0;
|
int maxValue = 100;
|
/// <summary>
|
/// 进度值最大值
|
/// </summary>
|
/// <value>最大值</value>
|
public int MaxValue
|
{
|
set
|
{
|
maxValue = value;
|
mHDLWaveSeekbar.SetMinAndMaxValue(minValue, maxValue);
|
}
|
}
|
|
/// <summary>
|
/// 进度值最小值
|
/// </summary>
|
/// <value>最小值</value>
|
public int MinValue
|
{
|
set
|
{
|
minValue = value;
|
mHDLWaveSeekbar.SetMinAndMaxValue(minValue, maxValue);
|
}
|
}
|
|
/// <summary>
|
/// 当前进度值
|
/// </summary>
|
/// <value>进度值</value>
|
public int Progress
|
{
|
set
|
{
|
mHDLWaveSeekbar.SetProgress(value);
|
}
|
|
get
|
{
|
return (int)mHDLWaveSeekbar.MProgress;
|
}
|
}
|
|
/// <summary>
|
/// 背景边框宽度
|
/// </summary>
|
/// <value>半径</value>
|
public int WaveBorderWidth
|
{
|
set
|
{
|
mHDLWaveSeekbar.SetBorderWidth(value);
|
}
|
}
|
|
/// <summary>
|
/// 波浪进度颜色
|
/// </summary>
|
/// <value>波浪进度颜色</value>
|
public uint WaveColor
|
{
|
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);
|
mHDLWaveSeekbar.MWaveProgressBarColor = UIKit.UIColor.FromRGBA(r, g, b, a);
|
mHDLWaveSeekbar.SetNeedsDisplay();
|
}
|
}
|
|
|
/// <summary>
|
/// 背景边框颜色
|
/// </summary>
|
/// <value>背景边框颜色</value>
|
public uint WaveBorderColor
|
{
|
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);
|
mHDLWaveSeekbar.MWaveBorderColor = UIKit.UIColor.FromRGBA(r, g, b, a);
|
mHDLWaveSeekbar.SetNeedsDisplay();
|
}
|
}
|
|
/// <summary>
|
/// 圆角
|
/// </summary>
|
/// <value>圆角</value>
|
public int CornerRadius
|
{
|
set
|
{
|
mHDLWaveSeekbar.MCornerRadius = value;
|
}
|
}
|
|
/// <summary>
|
/// 进度条与边框边距
|
/// </summary>
|
/// <value>半径</value>
|
public int WavePadding
|
{
|
set
|
{
|
mHDLWaveSeekbar.SetWavePadding(value);
|
}
|
}
|
|
/// <summary>
|
/// 当前进度值显示的文字颜色
|
/// </summary>
|
/// <value>文字颜色</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);
|
|
mHDLWaveSeekbar.MProgressTextColor = UIKit.UIColor.FromRGBA(r, g, b, a);
|
}
|
}
|
|
/// <summary>
|
/// 当前进度值显示的文字大小
|
/// </summary>
|
/// <value>文字大小</value>
|
public int ProgressTextSize
|
{
|
set
|
{
|
mHDLWaveSeekbar.MProgressTextSize = value;
|
}
|
|
}
|
|
/// <summary>
|
/// 是否可以滑动
|
/// </summary>
|
/// <value>是否可以滑动</value>
|
public bool IsClickable
|
{
|
set
|
{
|
mHDLWaveSeekbar.IsClickable = value;
|
}
|
}
|
|
/// <summary>
|
/// 是否显示进度文字
|
/// </summary>
|
/// <value>是否显示进度文字</value>
|
public bool IsProgressTextShow
|
{
|
set
|
{
|
mHDLWaveSeekbar.IsProgressTextShow = value;
|
}
|
}
|
|
/// <summary>
|
/// 当前进度值 Y坐标
|
/// </summary>
|
/// <value>Y坐标</value>
|
public int NowProgressY
|
{
|
get
|
{
|
return (int)mHDLWaveSeekbar.ProgressY;
|
}
|
}
|
|
|
/// <summary>
|
/// EventHandler
|
/// </summary>
|
public EventHandler<int> OnProgressChangedEvent;
|
public EventHandler<bool> OnStartTrackingTouchEvent;
|
public EventHandler<int> OnStopTrackingTouchEvent;
|
|
///// <summary>
|
///// OnProgressChangeListener 继承响应事件
|
///// </summary>
|
OnProgressChangeListener mOnProgressChangeListener;
|
|
public class OnProgressChangeListener : HDLWaveSeekbarProgressChangedDelegate
|
{
|
|
[Weak] WaveSeekBar _WaveSeekBar;
|
|
public OnProgressChangeListener(WaveSeekBar view)
|
{
|
_WaveSeekBar = view;
|
}
|
|
public override void OnProgressChanged(int mProgress)
|
{
|
//if (_WaveSeekBar.IsProgressChangeDelay()) return;
|
|
_WaveSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress);
|
}
|
|
public override void OnStartTrackingTouch()
|
{
|
_WaveSeekBar.OnStartTrackingTouchEvent?.Invoke(this, true);
|
}
|
|
public override void OnStopTrackingTouch(int mProgress)
|
{
|
_WaveSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress);
|
_WaveSeekBar.OnStopTrackingTouchEvent?.Invoke(this, mProgress);
|
}
|
}
|
|
}
|
}
|