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