using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter { /// /// 滑动进度条的封装控件,添加到父容器后,调用【InitControl】函数完成最终的初始化 /// public class SeekBarFrameLayout : FrameLayout { /// /// 进度值 /// private int ProgressValue = 0; /// /// 进度值改变事件 /// public Action ProgressValueEvent = null; /// /// 进度条控件 /// public HorizontalSeekBar seekBar = null; /// /// 进度条左边的控件 /// public NormalViewControl btnLeft = null; /// /// 进度条右边的控件 /// public RowMostRightTextView btnRight = null; /// /// 模式类型 /// private SeekBarTypeMode TypeMode = SeekBarTypeMode.OnlyPersent; /// /// 滑动进度条的封装控件,添加到父容器后,调用【InitControl】函数完成最终的初始化 /// /// 水平滑动滚动条的类型模式 public SeekBarFrameLayout(SeekBarTypeMode mode) { TypeMode = mode; this.Height = ControlCommonResourse.ListViewRowHeight; this.Gravity = Gravity.CenterHorizontal; if (mode == SeekBarTypeMode.OnlyPersent) { //单纯只在右边有一个百分比的文本 this.InitControlByOnlyPersentMode(); } else if (mode == SeekBarTypeMode.LeftAndPersent) { //左边有一个文本,右边有一个文本 this.InitControlByLeftAndRightMode(); } else if (mode == SeekBarTypeMode.LeftAndRight) { //左边有一个文本,右边有一个文本 this.InitControlByLeftAndRightMode(); } } /// /// 初始化控件 /// public void InitControl() { //单纯只在右边有一个百分比的文本 if (TypeMode == SeekBarTypeMode.OnlyPersent) { this.AddChidren(btnRight); this.AddChidren(seekBar); } //左边有一个文本,右边有一个文本 else if (TypeMode == SeekBarTypeMode.LeftAndPersent) { this.AddChidren(btnLeft); this.AddChidren(btnRight); this.AddChidren(seekBar); } //左边有一个文本,右边有一个文本 else if (TypeMode == SeekBarTypeMode.LeftAndRight) { this.AddChidren(btnLeft); this.AddChidren(btnRight); this.AddChidren(seekBar); } } /// /// 单纯只在右边有一个百分比的文本 /// private void InitControlByOnlyPersentMode() { btnRight = new RowMostRightTextView(); btnRight.Text = "0%"; //进度条 seekBar = new HorizontalSeekBar(); seekBar.X = ControlCommonResourse.XXLeft; seekBar.Width = Application.GetRealWidth(830); seekBar.Height = Application.GetRealHeight(80); seekBar.Max = 100; seekBar.Gravity = Gravity.CenterVertical; seekBar.BackgroundColor = Common.ZigbeeColor.Current.GXCSliderUnSelectedColor; seekBar.ThumbColor = Common.ZigbeeColor.Current.GXCButtonBlueColor; seekBar.BorderColor = Common.ZigbeeColor.Current.GXCButtonBlueColor; seekBar.ProgressColor = Common.ZigbeeColor.Current.GXCButtonBlueColor; seekBar.ProgressChanged += (sender, e) => { //设置进度值 int value = seekBar.Progress; this.SetProgressValue(value); if (ProgressValueEvent != null) { ProgressValueEvent(value); } }; } /// /// 左边有一个文本,右边有一个文本 /// private void InitControlByLeftAndRightMode() { //左边控件 btnLeft = new NormalViewControl(100, 100, true); //右边控件 btnRight = new RowMostRightTextView(); //进度条 seekBar = new HorizontalSeekBar(); seekBar.X = Application.GetRealWidth(180); seekBar.Max = 100; seekBar.Width = Application.GetRealWidth(700); seekBar.Height = Application.GetRealHeight(80); seekBar.Gravity = Gravity.CenterVertical; seekBar.BackgroundColor = Common.ZigbeeColor.Current.GXCSliderUnSelectedColor; seekBar.ThumbColor = Common.ZigbeeColor.Current.GXCButtonBlueColor; seekBar.BorderColor = Common.ZigbeeColor.Current.GXCButtonBlueColor; seekBar.ProgressColor = Common.ZigbeeColor.Current.GXCButtonBlueColor; if (TypeMode == SeekBarTypeMode.LeftAndPersent) { btnRight.Text = "0%"; } seekBar.ProgressChanged += (sender, e) => { //设置进度值 int value = seekBar.Progress; this.SetProgressValue(value); if (ProgressValueEvent != null) { ProgressValueEvent(value); } }; } /// /// 设置进度值 /// /// private void SetProgressValue(int value) { this.ProgressValue = value; if (TypeMode == SeekBarTypeMode.LeftAndPersent || TypeMode == SeekBarTypeMode.OnlyPersent) { this.btnRight.Text = value + "%"; } } /// /// 设置初始进度值 /// /// public void SetProgressDefultValue(int value) { if (value < 0) { value = 0; } this.ProgressValue = value; if (TypeMode == SeekBarTypeMode.LeftAndPersent || TypeMode == SeekBarTypeMode.OnlyPersent) { this.btnRight.Text = value + "%"; } seekBar.Progress = value; } /// /// 设置左边的文本 /// /// public void SetLeftText(string TextValue) { if (this.btnLeft != null) { this.btnLeft.Text = TextValue; } } /// /// 设置右边的文本 /// /// public void SetRightText(string TextValue) { if (this.btnRight != null) { this.btnRight.Text = TextValue; } } } }