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