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);
}
}
}
}