using System; using Android.Graphics; using Android.Graphics.Drawables; using Com.Hdl.Widget; namespace Shared { /// /// DiyImageVerticalSeekBar 自定义拖动按钮图片的滑动垂直方向SeekBar /// public class DiyImageVerticalSeekBar : BaseSeekBar { /// /// 当前视图 /// /// The HDLDiyImageVerticalSeekBar. HDLDiyImageVerticalSeekBar mHDLDiyImageVerticalSeekBar { get { return AndroidView as HDLDiyImageVerticalSeekBar; } set { AndroidView = value; } } /// /// 构造函数 /// public DiyImageVerticalSeekBar() { mHDLDiyImageVerticalSeekBar = new HDLDiyImageVerticalSeekBar(Application.Activity); mOnProgressChangeListener = new OnProgressChangeListener(this); mHDLDiyImageVerticalSeekBar.SetOnProgressChangeListener(mOnProgressChangeListener); } /// /// 进度值显示单位 /// /// 单位字符 public String ProgressBarUnitSring { set { mHDLDiyImageVerticalSeekBar.SetProgressBarUnitSring(value); } } /// /// 进度值最大值 /// /// 最大值 public int MaxValue { set { mHDLDiyImageVerticalSeekBar.SetMaxValue(value); } } /// /// 进度值最小值 /// /// 最小值 public int MinValue { set { mHDLDiyImageVerticalSeekBar.SetMinValue(value); } } /// /// 当前进度值 /// /// 进度值 public int Progress { set { mHDLDiyImageVerticalSeekBar.Progress = value; } get { return mHDLDiyImageVerticalSeekBar.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); mHDLDiyImageVerticalSeekBar.SetProgressTextColor(Android.Graphics.Color.Argb(a, r, g, b)); } } /// /// 当前进度值显示的文字大小 /// /// 文字大小 public int ProgressTextSize { set => mHDLDiyImageVerticalSeekBar.SetProgressTextSize(value); } /// /// 是否可以滑动 /// /// 是否可以滑动 public bool IsClickable { set { mHDLDiyImageVerticalSeekBar.SetIsClickable(value); } } /// /// 是否可以滑动 /// /// 是否可以滑动 public bool IsProgressTextShow { set { mHDLDiyImageVerticalSeekBar.SetProgressTextShow(value); } } /// /// 当前进度条颜色 /// public uint ProgressBarColor { 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); mHDLDiyImageVerticalSeekBar.SetProgressBarColor(Android.Graphics.Color.Argb(a, r, g, b)); mHDLDiyImageVerticalSeekBar.PostInvalidate(); } } /// /// 当前进度条背景的颜色 /// public uint SeekBarBackgroundColor { 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); mHDLDiyImageVerticalSeekBar.SetBarBackgroundColor(Android.Graphics.Color.Argb(a, r, g, b)); mHDLDiyImageVerticalSeekBar.PostInvalidate(); } } /// /// 进度条与左右边框边距 /// public int SeekBarPadding { set { mHDLDiyImageVerticalSeekBar.SetDiySeekBarPadding(value); } } /// /// 进度条高度 /// public int SeekBarViewHeight { set { mHDLDiyImageVerticalSeekBar.SetDiySeekBarViewHeight(value); } } /// /// 拖动按钮图片高度 /// public int ThumbImageHeight { set { mHDLDiyImageVerticalSeekBar.SetBitmapButtonHeight(value); } } string thumbImagePath; /// /// 拖动按钮图片 /// public string ThumbImagePath { get { return thumbImagePath; } set { thumbImagePath = value; var mDrawable = this.getDrawable(thumbImagePath); if (mDrawable == null) return; BitmapDrawable mBitmapDrawable = (BitmapDrawable)mDrawable; if (mBitmapDrawable == null) return; Bitmap bitmap = mBitmapDrawable.Bitmap; if (bitmap == null) return; mHDLDiyImageVerticalSeekBar.SetBgBitmapButton(bitmap); } } /// /// 是否离线 离线的话禁止滑动并绘制背景遮挡层 /// /// 是否离线 public bool IsOffline { set { mHDLDiyImageVerticalSeekBar.SetOffline(value); } } /// /// EventHandler /// public EventHandler OnProgressChangedEvent; public EventHandler OnStartTrackingTouchEvent; public EventHandler OnStopTrackingTouchEvent; /// /// OnProgressChangeListener 继承响应事件 /// OnProgressChangeListener mOnProgressChangeListener; public class OnProgressChangeListener : Java.Lang.Object, HDLDiyImageVerticalSeekBar.IOnProgressChangeListener { DiyImageVerticalSeekBar _DiyImageVerticalSeekBar; public OnProgressChangeListener(DiyImageVerticalSeekBar view) { _DiyImageVerticalSeekBar = view; } public void OnProgressChanged(HDLDiyImageVerticalSeekBar p0, int p1, bool p2) { if (_DiyImageVerticalSeekBar.IsProgressChangeDelay()) return; _DiyImageVerticalSeekBar.OnProgressChangedEvent?.Invoke(this, p0.Progress); } public void OnStartTrackingTouch(HDLDiyImageVerticalSeekBar p0) { _DiyImageVerticalSeekBar.OnStartTrackingTouchEvent?.Invoke(this, true); } public void OnStopTrackingTouch(HDLDiyImageVerticalSeekBar p0) { _DiyImageVerticalSeekBar.OnProgressChangedEvent?.Invoke(this, p0.Progress); _DiyImageVerticalSeekBar.OnStopTrackingTouchEvent?.Invoke(this, p0.Progress); } } } }