using System; using Android.Runtime; using Android.Views; using Com.Hdl.Widget; namespace Shared { /// /// ArcScaleSeekBar 空调 刻度圆弧控件 /// public class ArcScaleSeekBar : BaseSeekBar { /// /// 当前视图 /// /// The HDLArcScaleSeekBar. HDLArcScaleSeekBar mHDLArcScaleSeekBar { get { return AndroidView as HDLArcScaleSeekBar; } set { AndroidView = value; } } /// /// 构造函数 /// public ArcScaleSeekBar() { mHDLArcScaleSeekBar = new HDLArcScaleSeekBar(Application.Activity); mOnProgressChangeListener = new OnProgressChangeListener(this); mHDLArcScaleSeekBar.SetOnProgressChangeListener(mOnProgressChangeListener); } /// /// 进度值显示单位 /// /// 单位字符 public String ProgressBarUnitSring { set { mHDLArcScaleSeekBar.SetProgressBarUnitSring(value); } } /// /// 进度值最大值 /// /// 最大值 public int MaxValue { set { mHDLArcScaleSeekBar.SetMaxValue(value); } } /// /// 进度值最小值 /// /// 最小值 public int MinValue { set { mHDLArcScaleSeekBar.SetMinValue(value); } } /// /// 当前进度值 /// /// 进度值 public int Progress { set { mHDLArcScaleSeekBar.Progress = value; } get { return mHDLArcScaleSeekBar.Progress; } } /// /// 当前进度值显示的文字颜色 /// /// 文字颜色 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); mHDLArcScaleSeekBar.SetProgressTextColor(Android.Graphics.Color.Argb(a, r, g, b)); } } /// /// 当前进度值显示的文字大小 /// /// 文字大小 public int ProgressTextSize { set => mHDLArcScaleSeekBar.SetProgressTextSize(value); } /// /// 是否可以滑动 /// /// 是否可以滑动 public bool IsClickable { set { mHDLArcScaleSeekBar.SetIsClickable(value); } } /// /// 是否可以滑动 /// /// 是否可以滑动 public bool IsProgressTextShow { set { mHDLArcScaleSeekBar.SetProgressTextShow(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 = Android.Graphics.Color.Argb(a, r, g, b); 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 = Android.Graphics.Color.Argb(a2, r2, g2, b2); mHDLArcScaleSeekBar.SetStartColor(start); mHDLArcScaleSeekBar.SetEndColor(end); mHDLArcScaleSeekBar.PostInvalidate(); } /// /// 是否离线 离线的话禁止滑动并绘制背景遮挡层 /// /// 是否离线 public bool IsOffline { set { mHDLArcScaleSeekBar.SetOffline(value); } } /// /// EventHandler /// public EventHandler OnProgressChangedEvent; public EventHandler OnStartTrackingTouchEvent; public EventHandler OnStopTrackingTouchEvent; /// /// OnProgressChangeListener 继承响应事件 /// OnProgressChangeListener mOnProgressChangeListener; public class OnProgressChangeListener : Java.Lang.Object, HDLArcScaleSeekBar.IOnProgressChangeListener { ArcScaleSeekBar _ArcScaleSeekBar; public OnProgressChangeListener(ArcScaleSeekBar view) { _ArcScaleSeekBar = view; } public void OnProgressChanged(HDLArcScaleSeekBar p0, int p1, bool p2) { if (_ArcScaleSeekBar.IsProgressChangeDelay()) return; _ArcScaleSeekBar.OnProgressChangedEvent?.Invoke(this, p0.Progress); } public void OnStartTrackingTouch(HDLArcScaleSeekBar p0) { _ArcScaleSeekBar.OnStartTrackingTouchEvent?.Invoke(this, true); } public void OnStopTrackingTouch(HDLArcScaleSeekBar p0) { _ArcScaleSeekBar.OnProgressChangedEvent?.Invoke(this, p0.Progress); _ArcScaleSeekBar.OnStopTrackingTouchEvent?.Invoke(this, p0.Progress); } } } }