using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone.UserCenter
|
{
|
/// <summary>
|
/// 滑动进度条的封装控件,添加到父容器后,调用【InitControl】函数完成最终的初始化
|
/// </summary>
|
public class SeekBarFrameLayout : FrameLayout
|
{
|
/// <summary>
|
/// 进度值
|
/// </summary>
|
private int ProgressValue = 0;
|
/// <summary>
|
/// 进度值改变事件
|
/// </summary>
|
public Action<int> ProgressValueEvent = null;
|
/// <summary>
|
/// 进度条控件
|
/// </summary>
|
public HorizontalSeekBar seekBar = null;
|
/// <summary>
|
/// 进度条左边的控件
|
/// </summary>
|
public NormalViewControl btnLeft = null;
|
/// <summary>
|
/// 进度条右边的控件
|
/// </summary>
|
public RowMostRightTextView btnRight = null;
|
/// <summary>
|
/// 模式类型
|
/// </summary>
|
private SeekBarTypeMode TypeMode = SeekBarTypeMode.OnlyPersent;
|
|
/// <summary>
|
/// 滑动进度条的封装控件,添加到父容器后,调用【InitControl】函数完成最终的初始化
|
/// </summary>
|
/// <param name="mode">水平滑动滚动条的类型模式</param>
|
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();
|
}
|
}
|
|
/// <summary>
|
/// 初始化控件
|
/// </summary>
|
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);
|
}
|
}
|
|
/// <summary>
|
/// 单纯只在右边有一个百分比的文本
|
/// </summary>
|
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);
|
}
|
};
|
}
|
|
/// <summary>
|
/// 左边有一个文本,右边有一个文本
|
/// </summary>
|
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);
|
}
|
};
|
}
|
|
/// <summary>
|
/// 设置进度值
|
/// </summary>
|
/// <param name="value"></param>
|
private void SetProgressValue(int value)
|
{
|
this.ProgressValue = value;
|
if (TypeMode == SeekBarTypeMode.LeftAndPersent || TypeMode == SeekBarTypeMode.OnlyPersent)
|
{
|
this.btnRight.Text = value + "%";
|
}
|
}
|
|
/// <summary>
|
/// 设置初始进度值
|
/// </summary>
|
/// <param name="value"></param>
|
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;
|
}
|
|
/// <summary>
|
/// 设置左边的文本
|
/// </summary>
|
/// <param name="TextValue"></param>
|
public void SetLeftText(string TextValue)
|
{
|
if (this.btnLeft != null)
|
{
|
this.btnLeft.Text = TextValue;
|
}
|
}
|
|
/// <summary>
|
/// 设置右边的文本
|
/// </summary>
|
/// <param name="TextValue"></param>
|
public void SetRightText(string TextValue)
|
{
|
if (this.btnRight != null)
|
{
|
this.btnRight.Text = TextValue;
|
}
|
}
|
}
|
}
|