| | |
| | | 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 |
| | | { |
| | |
| | | /// 一行几个元素 |
| | | /// </summary> |
| | | private int mRowNumber; |
| | | /// <summary> |
| | | /// 列表最大值 |
| | | /// </summary> |
| | | private int mListCount; |
| | | |
| | | private List<int> mList; |
| | | |
| | | public Action<int> selectAction = null; |
| | | public Action<KeypadEntity> selectAction = null; |
| | | /// <summary> |
| | | /// 当前选择的索引(内部使用) |
| | | /// </summary> |
| | | private int CurrnetSelectIndex = -1; |
| | | |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="width">容器宽度</param> |
| | | /// <param name="height">容器高度</param> |
| | | ///<param name="rowNumber">一行几个元素</param> |
| | | ///<param name="rowNumber">圆角值</param> |
| | | public CornerFramLayout(int width, int height, int rowNumber,int radius=0) |
| | | 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.mRowNumber = rowNumber; |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | |
| | | this.rightMargin = right; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置列表数据(请在初始化完成之前调用) |
| | | /// </summary> |
| | | /// <param name="list"></param> |
| | | public void SetList(List<int> list) |
| | | { |
| | | if (list == null) |
| | | { |
| | | list = new List<int>(); |
| | | } |
| | | this.mList = list; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取测试列表数据 |
| | | /// </summary> |
| | | public List<int> GetTestList(int count) |
| | | public List<KeypadEntity> GetTestList() |
| | | { |
| | | var list = new List<int>(); |
| | | for (int i = 1; i <= count; i++) |
| | | { |
| | | list.Add(i); |
| | | } |
| | | return list; |
| | | return AksCommonMethod.Current.GetTYYKeypadList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 动态加载按键界面 |
| | | /// </summary> |
| | | public void LoadButtonPage() |
| | | /// <param name="mList">列表</param> |
| | | /// <param name="mRowNumber">一行多少个元素</param> |
| | | public void LoadButtonPage(List<KeypadEntity> mList, int mRowNumber) |
| | | { |
| | | if (this.mRowNumber == 0) |
| | | if (mRowNumber == 0) |
| | | { |
| | | return; |
| | | } |
| | | this.mRowNumber = mRowNumber; |
| | | this.mListCount = mList.Count; |
| | | int line = 0; |
| | | int xCount = 0; |
| | | for (int i = 1; i <= this.mList.Count; i++) |
| | | for (int i = 1; i <= mList.Count; i++) |
| | | { |
| | | ButtonFramLayout buttonFram = new ButtonFramLayout(); |
| | | var keypad = mList[i - 1]; |
| | | ButtonFramLayout buttonFram = new ButtonFramLayout(); |
| | | this.AddChidren(buttonFram); |
| | | buttonFram.Tag = i - 1; |
| | | 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.AddBottomLine(); |
| | | } |
| | | buttonFram.GetNameButton().Text = i.ToString(); |
| | | buttonFram.GetImageButton().UnSelectedImagePath = keypad.localIconAddress; |
| | | buttonFram.GetNameButton().Text = keypad.name; |
| | | |
| | | xCount++; |
| | | if (i % this.mRowNumber == 0) |
| | |
| | | } |
| | | buttonFram.SetClickListener((fl, btnIcon, btnName) => |
| | | { |
| | | selectAction?.Invoke((int)buttonFram.Tag); |
| | | if (buttonFram.Tag != null) |
| | | { |
| | | selectAction?.Invoke((KeypadEntity)buttonFram.Tag); |
| | | } |
| | | }); |
| | | |
| | | //if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i) |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 动态加载按键界面 |
| | | /// </summary> |
| | | /// <param name="mList">列表</param> |
| | | /// <param name="list">列表中索引,表示某一条宽度加宽</param> |
| | | public void LoadButtonPage(List<KeypadEntity> mList, List<int> list) |
| | | { |
| | | |
| | | 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; |
| | | } |
| | | |
| | | buttonFram.SetClickListener((fl, btnIcon, btnName) => |
| | | { |
| | | if (buttonFram.Tag != null) |
| | | { |
| | | selectAction?.Invoke((KeypadEntity)buttonFram.Tag); |
| | | } |
| | | }); |
| | | |
| | | //if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i) |
| | | //{ |
| | | // selectAction?.Invoke((int)buttonFram.Tag); |
| | | //} |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | ///动态加载数字按键界面 |
| | | /// </summary> |
| | | public void LoadNumberButtonPage(List<KeypadEntity> mList) |
| | | { |
| | | |
| | | int currnetheightValue = 0; |
| | | int currnetWidthValue = 0; |
| | | int heightMaxValue = 84; |
| | | 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 = 1; i <= mList.Count; i++) |
| | | { |
| | | var keypad = mList[i - 1]; |
| | | 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 = 0xff454635, |
| | | }; |
| | | this.AddChidren(button); |
| | | |
| | | currnetWidthValue += widthMaxValue; |
| | | if (widthDimensionValue < Application.GetRealWidth(currnetWidthValue)) |
| | | { |
| | | currnetheightValue += heightMaxValue; |
| | | currnetWidthValue = 0; |
| | | } |
| | | button.MouseDownEventHandler += (sen, e) => |
| | | { |
| | | if (button.Tag == null || ((KeypadEntity)button.Tag).keypad == "none") |
| | | { |
| | | return; |
| | | } |
| | | button.IsSelected = true; |
| | | selectAction?.Invoke((KeypadEntity)button.Tag); |
| | | }; |
| | | button.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | button.IsSelected = false; |
| | | }; |
| | | |
| | | //if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i) |
| | | //{ |
| | | // selectAction?.Invoke((int)buttonFram.Tag); |
| | | //} |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 动态加载图片界面 |
| | | /// </summary> |
| | | public void LoadImagePage() |
| | | public void LoadImagePage(List<KeypadEntity> mList) |
| | | { |
| | | if (this.mRowNumber == 0) |
| | | 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 = 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(currnetheightValue); |
| | | imageFram.X = Application.GetRealWidth(currnetWidthValue); |
| | | imageFram.btnName.Text = keypad.name; |
| | | currnetWidthValue += (widthMaxValue + 8);//8是隔间值 |
| | | if (widthDimensionValue < Application.GetRealWidth(currnetWidthValue)) |
| | | { |
| | | currnetheightValue += (heightMaxValue + 20);//20是隔间值 |
| | | currnetWidthValue = 0; |
| | | } |
| | | |
| | | imageFram.SetClickListener((fl) => |
| | | { |
| | | if (imageFram.Tag != null) |
| | | { |
| | | selectAction?.Invoke((KeypadEntity)imageFram.Tag); |
| | | } |
| | | }); |
| | | //if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i) |
| | | //{ |
| | | // selectAction?.Invoke((int)imageFram.Tag); |
| | | //} |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 动态加载图片界面 |
| | | /// </summary> |
| | | /// <param name="mRowNumber">一行多少个元素</param> |
| | | public void LoadImagePage(List<KeypadEntity> mList, int mRowNumber) |
| | | { |
| | | |
| | | if (mRowNumber == 0) |
| | | { |
| | | return; |
| | | } |
| | | this.mListCount = mList.Count; |
| | | this.mRowNumber = mRowNumber; |
| | | int line = 0; |
| | | int xCount = 0; |
| | | for (int i = 1; i <= this.mList.Count; i++) |
| | | for (int i = 1; i <= mList.Count; i++) |
| | | { |
| | | var keypad = mList[i - 1]; |
| | | ImageFramlayout imageFram = new ImageFramlayout(); |
| | | imageFram.AddView(this); |
| | | //this.AddChidren(imageFram); |
| | | imageFram.Tag = i - 1; |
| | | imageFram.Y = Application.GetRealHeight(this.topMargin)+ Application.GetRealHeight((ImageFramlayout.heightFrameLayout + 20) * line); |
| | | imageFram.Tag = keypad; |
| | | imageFram.Y = Application.GetRealHeight(this.topMargin) + Application.GetRealHeight((ImageFramlayout.heightFrameLayout + 20) * line); |
| | | imageFram.X = Application.GetRealWidth((ImageFramlayout.widthFrameLayout + 8) * xCount); |
| | | //imageFram.AddImageView(); |
| | | //imageFram.AddScoreButton(); |
| | | //imageFram.AddNameButton(); |
| | | imageFram.btnName.Text = i.ToString(); |
| | | imageFram.btnName.Text = keypad.name; |
| | | |
| | | xCount++; |
| | | if (i % this.mRowNumber == 0) |
| | |
| | | } |
| | | imageFram.SetClickListener((fl) => |
| | | { |
| | | selectAction?.Invoke((int)imageFram.Tag); |
| | | if (imageFram.Tag != null) |
| | | { |
| | | selectAction?.Invoke((KeypadEntity)imageFram.Tag); |
| | | } |
| | | }); |
| | | |
| | | //if (CurrnetSelectIndex != -1 && CurrnetSelectIndex == i) |
| | |
| | | /// <summary> |
| | | /// 最后一行 |
| | | /// </summary> |
| | | /// <param name="value"></param> |
| | | /// <param name="index">当前索引值</param> |
| | | /// <returns></returns> |
| | | private bool IsLastColumn(int value) |
| | | private bool IsLastColumn(int index) |
| | | { |
| | | int lineCount = this.mList.Count / this.mRowNumber; |
| | | int number = this.mList.Count % this.mRowNumber; |
| | | if (this.mRowNumber == 0 || mListCount == 0) |
| | | { |
| | | return false; |
| | | } |
| | | int lineCount = mListCount / this.mRowNumber;//得出行数 |
| | | int number = mListCount % this.mRowNumber; |
| | | if (number != 0) |
| | | { |
| | | if (value > lineCount * this.mRowNumber) |
| | | if (index > lineCount * this.mRowNumber) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (value > lineCount-- * this.mRowNumber) |
| | | int value = --lineCount * this.mRowNumber; |
| | | if (index > value) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | } |
| | | return false; |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 最后右边那一个 |
| | |
| | | /// <returns></returns> |
| | | private bool IsLastRight(int value) |
| | | { |
| | | if (this.mRowNumber == 0) |
| | | { |
| | | return false; |
| | | } |
| | | if (value % this.mRowNumber == 0) |
| | | { |
| | | return true; |
| | | }; |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 重新计算button宽度 |
| | | /// </summary> |
| | | /// <param name="button">控件</param> |
| | | /// <param name="widthMax">宽度最大最</param> |
| | | /// <param name="padding">内边距</param> |
| | | 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; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |