using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
///
/// 左右滑动的进度条控件
///
public class SeekBarControl : DiyImageSeekBar
{
#region ■ 变量声明___________________________
private uint nowProgressBarColor = 0;
///
/// 控件能否使用
///
public new bool Enable
{
set
{
this.IsClickable = value;
if (value == true)
{
//原来的颜色
base.ProgressBarColor = nowProgressBarColor;
}
else
{
//灰色
base.ProgressBarColor = 0xffe8e8e8;
}
}
}
///
/// 进度条颜色
///
public new uint ProgressBarColor
{
set
{
nowProgressBarColor = value;
base.ProgressBarColor = value;
}
}
///
/// 进度值改变,如果要设置初始进度值,此变量要在设置初始进度值之前进行设置(第一个参数0:滑动的时候,1:手指弹起的时候)
///
public Action ProgressChangedEvent = null;
///
/// 进度条事件的触发时间间隔(默认没有间隔,单位为毫秒)
///
public int EventWaitTime = -1;
///
/// 前回时间
///
private DateTime oldTime = DateTime.Now;
#endregion
#region ■ 初始化_____________________________
///
/// 左右滑动的进度条控件
///
/// 宽度,非真实值
public SeekBarControl(int i_width = 962)
{
this.Width = Application.GetRealWidth(i_width);
this.Height = Application.GetRealHeight(84);
//圆球的宽度
this.ThumbImageHeight = Application.GetRealHeight(84);
this.ThumbImagePath = "Item/SeekBarIcon.png";
//进度条的宽度
this.SeekBarViewHeight = Application.GetRealHeight(10);
//进度条背景色
this.SeekBarBackgroundColor = 0xfff5f5f5;
//上方是否显示文本
this.IsProgressTextShow = false;
this.MaxValue = 100;
this.Gravity = Gravity.CenterHorizontal;
//进度条值改变事件
this.OnProgressChangedEvent += this.MyProgressChangedEvent;
//手指弹起事件
this.OnStopTrackingTouchEvent += this.MyStopTrackingTouchEvent;
}
#endregion
#region ■ 事件_______________________________
///
/// 进度条值改变事件
///
///
///
private void MyProgressChangedEvent(object sender, int value)
{
if (this.ProgressChangedEvent == null)
{
this.OnProgressChangedEvent -= this.MyProgressChangedEvent;
return;
}
//时间间隔
if (EventWaitTime != -1)
{
if ((DateTime.Now - oldTime).TotalMilliseconds < EventWaitTime) { return; }
oldTime = DateTime.Now;
}
this.ProgressChangedEvent(0, value);
}
///
/// 手指弹起事件
///
///
///
private void MyStopTrackingTouchEvent(object sender, int value)
{
if (this.ProgressChangedEvent == null)
{
this.OnStopTrackingTouchEvent -= this.MyStopTrackingTouchEvent;
return;
}
//弹起事件不需要判断时间
this.ProgressChangedEvent(1, value);
}
#endregion
#region ■ 一般方法___________________________
///
/// 控件摧毁
///
public override void RemoveFromParent()
{
this.ProgressChangedEvent = null;
base.RemoveFromParent();
}
#endregion
}
}