using System;
using HDL_ON.UI.Music;
using Shared;
using System.Collections.Generic;
using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity;
namespace HDL_ON.UI.UI2.FuntionControlView.Aks.CommonView
{
///
/// 自定义圆角容器
///
public class CornerFramLayout : BaseFramLayout
{
private int topMargin;
private int leftMargin;
private int bottomMargin;
private int rightMargin;
private int mWidth;
private int mHeight;
///
/// 一行几个元素
///
private int mRowNumber;
///
/// 列表最大值
///
private int mListCount;
///
/// 按键回调
///
public Action selectKeyAction = null;
///
/// 影片回调
///
public Action selectImageAction = null;
///
///
///
/// 容器宽度
/// 容器高度
///圆角值
public CornerFramLayout(int width, int height, int radius = 0)
{
this.BackgroundColor = MusicColor.WhiteColor;
this.Width = Application.GetRealWidth(width);
this.Height = Application.GetRealHeight(height);
this.Radius = (uint)Application.GetRealHeight(radius);
this.mWidth = this.Width;
this.mHeight = this.Height;
}
///
/// 设置内边距
///
/// 上边距
/// 下边距
/// 左边距
/// 右边距
public void SetMargin(int top, int bottom, int left, int right)
{
this.topMargin = top;
this.bottomMargin = bottom;
this.leftMargin = left;
this.rightMargin = right;
}
///
/// 获取测试列表数据
///
public List GetTestList()
{
return AksCommonMethod.Current.GetTYYKeypadList(null);
}
///
/// 动态加载按键界面
///
/// 列表
/// 一行多少个元素
/// 默认值索引范围[0,mList.count-1],值超出范围视为无效
public void LoadButtonPage(List mList, int mRowNumber, int defaultIndex = -1)
{
if (mList == null || mList.Count == 0)
{
return;
}
if (mRowNumber == 0)
{
return;
}
this.mRowNumber = mRowNumber;
this.mListCount = mList.Count;
int line = 0;
int xCount = 0;
for (int i = 1; i <= mList.Count; i++)
{
var keypad = mList[i - 1];
ButtonFramLayout buttonFram = new ButtonFramLayout();
this.AddChidren(buttonFram);
buttonFram.Tag = keypad;
buttonFram.Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight(ButtonFramLayout.heightFrameLayout * line);
buttonFram.X = Application.GetRealWidth(this.leftMargin) + Application.GetRealWidth(ButtonFramLayout.widthFrameLayout * xCount);
buttonFram.AddImageView();
buttonFram.AddNameView();
if (!IsLastRight(i))
{
buttonFram.AddRightLine();
}
if (!IsLastColumn(i))
{
buttonFram.AddBottomLine();
}
buttonFram.GetImageButton().UnSelectedImagePath = keypad.localIconAddress;
buttonFram.GetNameButton().Text = keypad.name;
xCount++;
if (i % this.mRowNumber == 0)
{
line++;
xCount = 0;
}
//不支持按键点击背景颜色
if (!keypad.isClicked)
{
buttonFram.GetImageButton().Alpha = 0.5f;
buttonFram.GetNameButton().TextColor =unBackgroundColor;
buttonFram.SetClick(false);
}
buttonFram.SetClickListener((fl, btnIcon, btnName) =>
{
if (buttonFram.Tag == null)
{
return;
}
selectKeyAction?.Invoke((KeypadEntity)buttonFram.Tag);
});
//if (defaultIndex != -1 && defaultIndex == i)
//{
// if (buttonFram.Tag != null && buttonFram.Tag is KeypadEntity)
// {
// selectAction?.Invoke((KeypadEntity)buttonFram.Tag);
// }
//}
}
}
///
/// 动态加载按键界面
///
/// 列表
/// 列表中索引,表示某一条宽度加宽,没有默认(new List)
/// 默认值索引范围[0,mList.count-1],值超出范围视为无效
public void LoadButtonPage(List mList, List list,int defaultIndex=-1)
{
if (mList == null || mList.Count == 0)
{
return;
}
int currnetheightValue = 0;
int currnetWidthValue = 0;
//获取相对一个纬度值
int heightDimensionValue = this.Height - Application.GetRealHeight(this.topMargin) - Application.GetRealHeight(this.bottomMargin) - Application.GetRealHeight(ButtonFramLayout.heightFrameLayout / 2);
int widthDimensionValue = this.Width - Application.GetRealWidth(this.leftMargin) - Application.GetRealWidth(this.rightMargin) - Application.GetRealHeight(ButtonFramLayout.widthFrameLayout / 2);
for (int i = 1; i <= mList.Count; i++)
{
var keypad = mList[i - 1];
ButtonFramLayout buttonFram = null;
if (list.Contains(i))
{
buttonFram = new ButtonFramLayout(ButtonFramLayout.widthFrameLayout * 2);
buttonFram.Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight(currnetheightValue);
buttonFram.X = Application.GetRealWidth(this.leftMargin) + Application.GetRealWidth(currnetWidthValue);
currnetWidthValue += ButtonFramLayout.widthFrameLayout * 2;
}
else
{
buttonFram = new ButtonFramLayout();
buttonFram.Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight(currnetheightValue);
buttonFram.X = Application.GetRealWidth(this.leftMargin) + Application.GetRealWidth(currnetWidthValue);
currnetWidthValue += ButtonFramLayout.widthFrameLayout;
}
this.AddChidren(buttonFram);
buttonFram.AddImageView();
buttonFram.AddNameView();
buttonFram.Tag = keypad;//标记数据
buttonFram.GetImageButton().UnSelectedImagePath = keypad.localIconAddress;
buttonFram.GetNameButton().Text = keypad.name;
if (widthDimensionValue > Application.GetRealWidth(currnetWidthValue))
{
//加右线
buttonFram.AddRightLine();
}
if (heightDimensionValue > buttonFram.Bottom)
{
//加底线
buttonFram.AddBottomLine();
}
if (widthDimensionValue < Application.GetRealWidth(currnetWidthValue))
{
currnetheightValue += ButtonFramLayout.heightFrameLayout;
currnetWidthValue = 0;
}
//不支持按键点击背景颜色
if (!keypad.isClicked)
{
buttonFram.GetImageButton().Alpha = 0.5f;
buttonFram.GetNameButton().TextColor = unBackgroundColor;
buttonFram.SetClick(false);
}
buttonFram.SetClickListener((fl, btnIcon, btnName) =>
{
if (buttonFram.Tag == null)
{
return;
}
selectKeyAction?.Invoke((KeypadEntity)buttonFram.Tag);
});
//if (defaultIndex != -1 && defaultIndex == i)
//{
// if (buttonFram.Tag != null && buttonFram.Tag is KeypadEntity)
// {
// selectAction?.Invoke((KeypadEntity)buttonFram.Tag);
// }
//}
}
}
///
///动态加载数字按键界面
///
/// 列表
/// 默认值索引范围[0,mList.count-1],值超出范围视为无效
public void LoadNumberButtonPage(List mList)
{
if (mList == null || mList.Count == 0)
{
return;
}
int currnetheightValue = 0;
int currnetWidthValue = 0;
int heightMaxValue = 84 - 6;
int widthMaxValue = 78;
//获取相对一个纬度值
int heightDimensionValue = this.Height - Application.GetRealHeight(this.topMargin) - Application.GetRealHeight(this.bottomMargin) - Application.GetRealHeight(heightMaxValue / 2);
int widthDimensionValue = this.Width - Application.GetRealWidth(this.leftMargin) - Application.GetRealWidth(this.rightMargin) - Application.GetRealHeight(widthMaxValue / 2);
for (int i = 0; i < mList.Count; i++)
{
var keypad = mList[i];
Button button = new Button
{
Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight(currnetheightValue),
X = Application.GetRealWidth(this.leftMargin) + Application.GetRealWidth(currnetWidthValue),
Width = Application.GetRealWidth(widthMaxValue),
Height = Application.GetRealHeight(heightMaxValue),
Text = keypad.name,
TextSize = TextSize.Text20,
TextColor = MusicColor.TextColor,
TextAlignment = TextAlignment.Center,
IsBold = true,
Tag = keypad,
BackgroundColor = MusicColor.WhiteColor,
SelectedBackgroundColor = 0xFFF2F3F7,
Radius = (uint)Application.GetRealHeight(8),
SelectedTextColor = MusicColor.TextColor,
};
this.AddChidren(button);
currnetWidthValue += widthMaxValue;
if (widthDimensionValue < Application.GetRealWidth(currnetWidthValue))
{
currnetheightValue += heightMaxValue;
currnetWidthValue = 0;
}
//不支持按键点击背景颜色
if (!keypad.isClicked)
{
button.TextColor =unBackgroundColor;
}
button.MouseUpEventHandler += (sen, e) =>
{
if (button.Tag == null || ((KeypadEntity)button.Tag).keypad == "none"|| !((KeypadEntity)button.Tag).isClicked)
{
return;
}
selectKeyAction?.Invoke((KeypadEntity)button.Tag);
SetButtonIsSelected(button);
};
//if (defaultIndex != -1 && defaultIndex == i)
//{
// selectAction?.Invoke((int)buttonFram.Tag);
//}
}
}
///
/// 动态加载图片界面
/// 影片布局
///
/// 列表
/// 默认值索引范围[0,mList.count-1],值超出范围视为无效
public void LoadImagePage(List mList)
{
if (mList == null || mList.Count == 0)
{
return;
}
int currnetheightValue = 0;
int currnetWidthValue = 0;
int heightMaxValue = ImageFramlayout.heightFrameLayout;
int widthMaxValue = ImageFramlayout.widthFrameLayout;
//获取相对一个纬度值
int heightDimensionValue = this.Height - Application.GetRealHeight(this.topMargin) - Application.GetRealHeight(this.bottomMargin) - Application.GetRealHeight(heightMaxValue / 2);
int widthDimensionValue = this.Width - Application.GetRealWidth(this.leftMargin) - Application.GetRealWidth(this.rightMargin) - Application.GetRealHeight(widthMaxValue / 2);
for (int i = 0; i < mList.Count; i++)
{
var movieLibrary = mList[i];
ImageFramlayout imageFram = new ImageFramlayout();
imageFram.AddView(this);
imageFram.Tag = movieLibrary;
imageFram.Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight(currnetheightValue);
imageFram.X = Application.GetRealWidth(currnetWidthValue);
imageFram.btnName.Text = movieLibrary.name;
imageFram.btnImage.ImageBytes = movieLibrary.imageBytes;
imageFram.btnScore.Text = movieLibrary.rating;
currnetWidthValue += (widthMaxValue + 8);//8是隔间值
if (widthDimensionValue < Application.GetRealWidth(currnetWidthValue))
{
currnetheightValue += (heightMaxValue + 20);//20是隔间值
currnetWidthValue = 0;
}
imageFram.SetClickListener((fl) =>
{
if (imageFram.Tag != null&& imageFram.Tag is MovieLibrary)
{
selectImageAction?.Invoke((MovieLibrary)imageFram.Tag);
}
});
//if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i)
//{
// selectImageAction?.Invoke((int)imageFram.Tag);
//}
}
}
///
/// 动态加载图片界面
/// 影片布局
///
/// 一行多少个元素
/// 默认值索引范围[0,mList.count-1],值超出范围视为无效
public void LoadImagePage(List mList, int mRowNumber)
{
if (mList == null || mList.Count == 0)
{
return;
}
if (mRowNumber == 0)
{
return;
}
this.mListCount = mList.Count;
this.mRowNumber = mRowNumber;
int line = 0;
int xCount = 0;
for (int i = 1; i <= mList.Count; i++)
{
var keypad = mList[i - 1];
ImageFramlayout imageFram = new ImageFramlayout();
imageFram.AddView(this);
imageFram.Tag = keypad;
imageFram.Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight((ImageFramlayout.heightFrameLayout + 20) * line);
imageFram.X = Application.GetRealWidth((ImageFramlayout.widthFrameLayout + 8) * xCount);
imageFram.btnName.Text = keypad.name;
xCount++;
if (i % this.mRowNumber == 0)
{
line++;
xCount = 0;
}
imageFram.SetClickListener((fl) =>
{
if (imageFram.Tag != null && imageFram.Tag is MovieLibrary)
{
selectImageAction?.Invoke((MovieLibrary)imageFram.Tag);
}
});
//if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i)
//{
// selectImageAction?.Invoke((MovieLibrary)imageFram.Tag);
//}
}
}
private int currnetheightValue1 = 0;
private int currnetWidthValue1 = 0;
private int heightMaxValue1 = ImageFramlayout.heightFrameLayout;
private int widthMaxValue1 = ImageFramlayout.widthFrameLayout;
//获取相对一个纬度值
private int widthDimensionValue1 = Application.GetRealWidth(343) - Application.GetRealHeight(ImageFramlayout.widthFrameLayout / 2);
///
/// 加载影片列表布局
/// (特殊布局)
///
/// 列表
public void LoadImagePage(List imageFramlayoutList)
{
if (imageFramlayoutList==null||imageFramlayoutList.Count == 0)
{
return;
}
//int currnetheightValue = 0;
//int currnetWidthValue = 0;
//int heightMaxValue = ImageFramlayout.heightFrameLayout;
//int widthMaxValue = ImageFramlayout.widthFrameLayout;
////获取相对一个纬度值
//int heightDimensionValue = this.Height - Application.GetRealHeight(this.topMargin) - Application.GetRealHeight(this.bottomMargin) - Application.GetRealHeight(heightMaxValue / 2);
//int widthDimensionValue = this.Width - Application.GetRealWidth(this.leftMargin) - Application.GetRealWidth(this.rightMargin) - Application.GetRealHeight(widthMaxValue / 2);
for (int i = 0; i < imageFramlayoutList.Count; i++)
{
var imageFram = imageFramlayoutList[i];
if (imageFram == null)
{
continue;
}
imageFram.AddView(this);
imageFram.Y =Application.GetRealHeight(this.topMargin) + Application.GetRealHeight(currnetheightValue1);
imageFram.X = Application.GetRealWidth(currnetWidthValue1);
currnetWidthValue1 += (widthMaxValue1 + 8);//8是隔间值
if (widthDimensionValue1 < Application.GetRealWidth(currnetWidthValue1))
{
currnetheightValue1 += (heightMaxValue1 + 20);//20是隔间值
currnetWidthValue1 = 0;
}
imageFram.SetClickListener((fl) =>
{
if (imageFram.Tag != null && imageFram.Tag is MovieLibrary)
{
selectImageAction?.Invoke((MovieLibrary)imageFram.Tag);
}
});
}
}
///
/// 水平滑动布局
///
/// 列表
/// 默认值索引范围[0,mList.count-1],值超出范围视为无效
public void LoadHorizontalPage(List mList, int defaultIndex = -1)
{
if (mList == null || mList.Count == 0)
{
return;
}
for (int i = 0; i < mList.Count; i++)
{
var filterCategory = mList[i];
BaseFramLayout horizontalFL = new BaseFramLayout
{
Y = Application.GetRealHeight(i * 75),
Height = Application.GetRealHeight(75),
Width = this.Width,
};
this.AddChidren(horizontalFL);
Button btnTitleType = new Button
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(16),
Height = Application.GetRealHeight(22),
Width = Application.GetRealWidth(200),
Text = filterCategory.name,
TextSize = TextSize.Text16,
TextColor = MusicColor.TextColor,
TextAlignment = TextAlignment.CenterLeft,
IsBold = true,
Tag = filterCategory,
};
horizontalFL.AddChidren(btnTitleType);
HorizontalFramLayout horizontal = new HorizontalFramLayout(375 - 16, 28);
horizontalFL.AddChidren(horizontal);
horizontal.Y = btnTitleType.Bottom + Application.GetRealHeight(8);
horizontal.X = Application.GetRealWidth(16);
horizontal.SelectTypeEvent += (filters) =>
{
KeypadEntity keypad = new KeypadEntity();
keypad.category = filters.category;
keypad.filterValue = filters.filterValue;
keypad.filterName = filters.filterName;
selectKeyAction?.Invoke(keypad);
};
horizontal.InitControl(filterCategory.filters, defaultIndex);
}
}
///
/// 最后一行
///
/// 当前索引值
///
private bool IsLastColumn(int index)
{
if (this.mRowNumber == 0 || mListCount == 0)
{
return false;
}
int lineCount = mListCount / this.mRowNumber;//得出行数
int number = mListCount % this.mRowNumber;
if (number != 0)
{
if (index > lineCount * this.mRowNumber)
{
return true;
}
}
else
{
int value = --lineCount * this.mRowNumber;
if (index > value)
{
return true;
}
}
return false;
}
///
/// 最后右边那一个
///
///
///
private bool IsLastRight(int value)
{
if (this.mRowNumber == 0)
{
return false;
}
if (value % this.mRowNumber == 0)
{
return true;
};
return false;
}
///
/// 重新计算button宽度
///
/// 控件
/// 宽度最大最
/// 内边距
private void AdjustRealWidth(Button button, int widthMax = 0, int padding = 0)
{
if (button == null)
{
return;
}
int width;
if (widthMax == 0)
{
//内边距
width = button.GetTextWidth() + Application.GetRealWidth(padding * 2);
}
else
{
if (button.GetTextWidth() > Application.GetRealWidth(widthMax))
{
button.TextSize = 10;//控件高度不变,改变字体大小,准备换行;
width = Application.GetRealWidth(widthMax);
}
else
{
width = button.GetTextWidth();
}
}
button.Width = width;
}
}
}