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