using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
///
/// 做成一个存在于右上角的菜单控件
///
public class TopRightMenuControl : FrameLayout
{
#region ■ 变量声明___________________________
///
/// 桌布控件
///
private FrameLayout frameTable = null;
///
/// 三角形图标
///
private PicViewControl btnTriangle = null;
///
/// 头部圆角控件
///
private NormalViewControl btnTopRadius = null;
///
/// 底部圆角控件
///
private NormalViewControl btnBottomRadius = null;
///
/// 前回选择的行
///
private FrameLayoutControl oldRowFrame = null;
///
/// 行高度
///
private int RowHeight = 150;
///
/// 行宽度
///
//private int RowWidth = 449;
private int RowWidth = 395;
///
/// 行数
///
private int RowCount = 0;
///
/// 菜单计数
///
private int menuCount = 0;
///
/// 圆角度
///
private int tableRadius = Application.GetMinRealAverage(12);
#endregion
#region ■ 初始化_____________________________
///
/// 做成一个存在于右上角的菜单控件
///
/// 父容器控件
/// 一共有几行
/// 这个菜单有多宽
public TopRightMenuControl(FrameLayout frame, int i_RowCount, int i_width = 395)
{
this.RowCount = i_RowCount;
this.RowWidth = i_width;
//初始化画面的控件
this.InitFormControl(frame);
}
///
/// 初始化画面的控件
///
/// 父容器控件
private void InitFormControl(FrameLayout frame)
{
this.BackgroundColor = UserCenterColor.Current.DialogBackColor;
this.MouseUpEventHandler += (sender2, e2) =>
{
//关闭自身
this.RemoveFromParent();
};
frame.AddChidren(this);
//桌布
this.frameTable = new FrameLayout();
//frameTable.X = Application.GetRealWidth(596);
//frameTable.Y = Application.GetRealHeight(184);
frameTable.X = Application.GetRealWidth(662 - (RowWidth - 395));
frameTable.Y = Application.GetRealHeight(158 + 15 + 1);
frameTable.Width = Application.GetRealWidth(RowWidth);
frameTable.Height = Application.GetRealHeight(RowHeight * this.RowCount) + (this.RowCount - 1) * ControlCommonResourse.BottomLineHeight;
frameTable.BackgroundColor = UserCenterColor.Current.White;
frameTable.Radius = (uint)tableRadius / 2;
this.AddChidren(frameTable);
//头部圆角控件
btnTopRadius = new NormalViewControl(frameTable.Width, tableRadius * 2, false);
btnTopRadius.Radius = (uint)tableRadius;
//btnTopRadius.BackgroundColor = UserCenterColor.Current.BlackBackGround;
frameTable.AddChidren(btnTopRadius);
if (RowCount == 1)
{
btnTopRadius.BackgroundColor = UserCenterColor.Current.White;
}
//底部圆角控件
btnBottomRadius = new NormalViewControl(frameTable.Width, tableRadius * 2, false);
btnBottomRadius.Y = frameTable.Height - tableRadius * 2;
btnBottomRadius.Radius = (uint)tableRadius;
btnBottomRadius.BackgroundColor = UserCenterColor.Current.White;
frameTable.AddChidren(btnBottomRadius);
//三角形图标
btnTriangle = new PicViewControl(31, 15);
btnTriangle.X = Application.GetRealWidth(980);
//btnTriangle.Y = Application.GetRealHeight(169);
btnTriangle.Y = Application.GetRealHeight(158);
btnTriangle.UnSelectedImagePath = "Item/UpperTriangle.png";
this.AddChidren(btnTriangle);
}
#endregion
#region ■ 添加菜单___________________________
///
/// 添加菜单行
///
/// 显示的文字
/// 图片
/// 图片
/// 单击菜单执行的事件
/// 单击的时候,关闭菜单
public void AddRowMenu(string TextValue, string unSelectPic, string selectPic, Action action, bool closeOnClick = true)
{
NormalViewControl btnLine = null;
if (menuCount > 0)
{
//画线
btnLine = new NormalViewControl(Application.GetRealWidth(RowWidth - 81), ControlCommonResourse.BottomLineHeight, false);
btnLine.X = Application.GetRealWidth(81);
btnLine.Y = Application.GetRealHeight(RowHeight * menuCount) + menuCount * ControlCommonResourse.BottomLineHeight;
btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
frameTable.AddChidren(btnLine);
}
menuCount++;
var rowFrame = new FrameLayoutControl();
rowFrame.Height = Application.GetRealHeight(RowHeight);
rowFrame.Name = "Menu" + menuCount;
if (btnLine != null)
{
rowFrame.Y = btnLine.Bottom;
}
if (this.RowCount == 1)
{
//只有一个菜单
rowFrame.Y = tableRadius;
rowFrame.Height = Application.GetRealHeight(RowHeight) - tableRadius * 2;
}
frameTable.AddChidren(rowFrame);
//图标
var btnIcon = new IconViewControl(81);
btnIcon.X = Application.GetRealWidth(81);
btnIcon.Gravity = Gravity.CenterVertical;
btnIcon.UnSelectedImagePath = unSelectPic;
btnIcon.SelectedImagePath = selectPic;
rowFrame.AddChidren(btnIcon, ChidrenBindMode.BindEventOnly);
//显示文字
var btnText = new NormalViewControl(RowWidth - 173, 58, true);
btnText.X = Application.GetRealWidth(173);
btnText.Text = TextValue;
btnText.Gravity = Gravity.CenterVertical;
rowFrame.AddChidren(btnText, ChidrenBindMode.BindEventOnly);
if (menuCount > 1)
{
btnIcon.IsSelected = false;
btnText.TextColor = UserCenterColor.Current.TextGrayColor1;
}
if (this.RowCount == 1)
{
//如果只有一个菜单
}
else if (menuCount == 1)
{
//多个菜单模式的第一个菜单
rowFrame.Y = tableRadius;
rowFrame.Height -= tableRadius;
btnIcon.Y -= tableRadius / 2;
btnText.Y -= tableRadius / 2;
//第一个菜单默认设置为选择状态
this.SetRowSelectStatu(rowFrame, true);
this.oldRowFrame = rowFrame;
}
else if (menuCount == this.RowCount)
{
//多个菜单模式的最后一个菜单
rowFrame.Height -= tableRadius;
btnIcon.Y += tableRadius / 2;
btnText.Y += tableRadius / 2;
}
//选择状态
rowFrame.SelectStatuEvent += (statu) =>
{
//false为控件自身自动执行,这里不需要还原
if (statu == true)
{
//设置为选择状态
this.SetRowSelectStatu(rowFrame, true);
this.oldRowFrame = rowFrame;
}
};
//按键点击
rowFrame.ButtonClickEvent += (sender, e) =>
{
if (closeOnClick == true)
{
this.RemoveFromParent();
}
action?.Invoke();
};
}
#endregion
#region ■ 设置选择状态_______________________
///
/// 设置选择状态
///
/// 行控件
/// 选择的状态
private void SetRowSelectStatu(FrameLayoutControl frame, bool select)
{
//图标
var btnIcon = (IconViewControl)frame.GetChildren(0);
if (btnIcon != null)
{
btnIcon.IsSelected = select;
}
//文本
var btnText = (NormalViewControl)frame.GetChildren(1);
if (btnText != null)
{
//btnText.TextColor = select == true ? UserCenterColor.Current.TextColor3 : UserCenterColor.Current.TextColor1;
btnText.TextColor = select == true ? UserCenterColor.Current.TextColor1 : UserCenterColor.Current.TextGrayColor1;
}
//背景色
//frame.BackgroundColor = select == true ? UserCenterColor.Current.BlackBackGround : UserCenterColor.Current.White;
if (this.RowCount == 1)
{
//如果只有一个菜单的话
//this.btnTopRadius.BackgroundColor = UserCenterColor.Current.BlackBackGround;
//this.btnBottomRadius.BackgroundColor = UserCenterColor.Current.BlackBackGround;
return;
}
//前回选择的菜单为null,或者是相同的东西,则不处理
if (this.oldRowFrame == null || this.oldRowFrame.Name == frame.Name)
{
return;
}
if (frame.Name == "Menu1")
{
//如果点击的是第一个菜单的话,变黑色
//this.btnTopRadius.BackgroundColor = UserCenterColor.Current.BlackBackGround;
}
else
{
//变回白色
//this.btnTopRadius.BackgroundColor = UserCenterColor.Current.White;
}
if (frame.Name == "Menu" + this.RowCount)
{
//如果点击的是最后一个菜单的话,变黑色
//this.btnBottomRadius.BackgroundColor = UserCenterColor.Current.BlackBackGround;
}
else
{
//变回白色
//this.btnBottomRadius.BackgroundColor = UserCenterColor.Current.White;
}
//前回选择的行还原
this.SetRowSelectStatu(this.oldRowFrame, false);
}
#endregion
}
}