| | |
| | | |
| | | namespace HDL_ON.UI.UI2.FuntionControlView.Aks.CommonView |
| | | { |
| | | public class TypeSingleFramLayout : BaseFramLayout |
| | | public class TypeSingleFramLayout |
| | | { |
| | | /// <summary> |
| | | /// 是否可以点击 |
| | | /// </summary> |
| | | private bool mIsClick = true; |
| | | private uint UpBackgroundColor = BaseFramLayout.unParentBackgroundColor; |
| | | private uint DownBackgroundColor = BaseFramLayout.seleBackgroundColor; |
| | | |
| | | private uint UpBackgroundColor = 0x00000000; |
| | | private uint DownBackgroundColor = 0xff454635; |
| | | public TypeSingleFramLayout(int width, int height) |
| | | /// <summary> |
| | | /// 设置控制点击事件 |
| | | /// </summary> |
| | | /// <param name="isClick">false点击无效</param> |
| | | public void setClick(bool isClick) |
| | | { |
| | | this.Width = Application.GetRealWidth(width); |
| | | this.Height = Application.GetRealHeight(height); |
| | | this.Radius = (uint)Application.GetRealHeight(20); |
| | | this.BackgroundColor = MusicColor.ViewColor; |
| | | |
| | | this.mIsClick = isClick; |
| | | } |
| | | |
| | | Button btnLeftImage = new Button |
| | | |
| | | /// <summary> |
| | | /// 单个类型容器 |
| | | /// </summary> |
| | | public FrameLayout singleFramLayout = new FrameLayout |
| | | { |
| | | X=Application.GetRealWidth(16), |
| | | BackgroundColor = MusicColor.ViewColor, |
| | | //Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(101), |
| | | Height = Application.GetRealHeight(34),//40 |
| | | Radius = (uint)Application.GetRealHeight(17), |
| | | }; |
| | | |
| | | public Button btnLeftImage = new Button |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Width = Application.GetRealWidth(16), |
| | | Height = Application.GetRealWidth(16), |
| | | UnSelectedImagePath = "AksIcon/yingku.png", |
| | | Gravity = Gravity.CenterVertical, |
| | | Name = "btnLeftImage", |
| | | }; |
| | | Button btnName = new Button |
| | | |
| | | public Button btnName = new Button |
| | | { |
| | | |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealHeight(23), |
| | | TextID=StringId.yingku, |
| | | TextID = StringId.yingku, |
| | | TextSize = TextSize.Text16, |
| | | TextColor = MusicColor.TextColor, |
| | | TextAlignment = TextAlignment.Center, |
| | | Gravity = Gravity.CenterVertical, |
| | | IsMoreLines = true, |
| | | Padding = new Padding(0, 0, 0, 0), |
| | | Name = "btnName", |
| | | }; |
| | | |
| | | Button btnRightImage = new Button |
| | | public Button btnRightImage = new Button |
| | | { |
| | | Width = Application.GetRealWidth(16), |
| | | Height = Application.GetRealWidth(16), |
| | | |
| | | Width = Application.GetRealWidth(5), |
| | | Height = Application.GetRealWidth(8), |
| | | UnSelectedImagePath = "AksIcon/yingkunext.png", |
| | | Gravity = Gravity.CenterVertical, |
| | | Name = "btnRightImage", |
| | | }; |
| | | |
| | | |
| | | public void AddBtnLeftImage() |
| | | public void AddView(FrameLayout layout) |
| | | { |
| | | this.AddChidren(btnLeftImage); |
| | | } |
| | | |
| | | public void AddBtnName(int gap = 4) |
| | | { |
| | | this.AddChidren(btnName); |
| | | if (this.IsAddBtn(btnLeftImage)) |
| | | { |
| | | btnName.X = btnLeftImage.Right + Application.GetRealWidth(gap); |
| | | } |
| | | |
| | | //if (btnName.GetTextWidth() < btnName.Width) |
| | | //{ |
| | | // btnName.Width = btnName.GetTextWidth(); |
| | | //} |
| | | |
| | | } |
| | | |
| | | public void AddBtnRightImage(int gap = 8) |
| | | { |
| | | this.AddChidren(btnRightImage); |
| | | if (this.IsAddBtn(btnName)) |
| | | { |
| | | btnRightImage.X = btnName.Right + Application.GetRealWidth(gap); |
| | | if (gap == 8) |
| | | { |
| | | btnRightImage.Width = Application.GetRealWidth(5); |
| | | btnRightImage.Height = Application.GetRealHeight(8); |
| | | } |
| | | |
| | | } |
| | | |
| | | layout.AddChidren(singleFramLayout); |
| | | singleFramLayout.AddChidren(btnLeftImage); |
| | | singleFramLayout.AddChidren(btnName); |
| | | singleFramLayout.AddChidren(btnRightImage); |
| | | btnName.X = btnLeftImage.Right + Application.GetRealWidth(4); |
| | | btnRightImage.X = btnName.Right + Application.GetRealWidth(8); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public Button GetBtnLeftImage() |
| | | { |
| | | return btnLeftImage; |
| | | } |
| | | |
| | | public Button GetBtnName() |
| | | { |
| | | return btnName; |
| | | } |
| | | |
| | | public Button GetBtnRightImage() |
| | | { |
| | | return btnRightImage; |
| | | } |
| | | |
| | | public void SetClickUpBackgroundColor(uint backgroundColor) |
| | | { |
| | |
| | | /// <summary> |
| | | /// 事件监听方法 |
| | | /// </summary> |
| | | /// <param name="action">回调(第一个是父类对象;第二个是图标对象;第三个是状态对象</param> |
| | | public void SetClickListener(Action<FrameLayout, Button, Button, Button> action) |
| | | /// <param name="action">回调(第一个是父类对象;</param> |
| | | public void SetClickListener(Action<FrameLayout> action) |
| | | { |
| | | EventHandler<MouseEventArgs> UpClick = (sender, e) => |
| | | { |
| | | this.BackgroundColor = this.UpBackgroundColor; |
| | | action?.Invoke(this, btnLeftImage, btnName, btnRightImage); |
| | | action?.Invoke(singleFramLayout); |
| | | //singleFramLayout.BackgroundColor = this.UpBackgroundColor; |
| | | |
| | | //弹起来还原背景颜色 |
| | | }; |
| | | this.MouseUpEventHandler += UpClick; |
| | | singleFramLayout.MouseUpEventHandler += UpClick; |
| | | btnLeftImage.MouseUpEventHandler += UpClick; |
| | | btnName.MouseUpEventHandler += UpClick; |
| | | btnRightImage.MouseUpEventHandler += UpClick; |
| | |
| | | EventHandler<MouseEventArgs> DownClick = (sender, e) => |
| | | { |
| | | //按下去改变背景颜色 |
| | | this.BackgroundColor = this.DownBackgroundColor; |
| | | //singleFramLayout.BackgroundColor = this.DownBackgroundColor; |
| | | |
| | | }; |
| | | this.MouseDownEventHandler += DownClick; |
| | | singleFramLayout.MouseDownEventHandler += DownClick; |
| | | btnLeftImage.MouseDownEventHandler += DownClick; |
| | | btnName.MouseDownEventHandler += DownClick; |
| | | btnRightImage.MouseDownEventHandler += DownClick; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 在父布局查找子控件是否存在 |
| | | /// 自动计算控件长度 |
| | | /// </summary> |
| | | /// <param name="btn">查找对象</param> |
| | | /// <returns>存在为true,否则为false</returns> |
| | | private bool IsAddBtn(View btn) |
| | | /// <param name="orientation">位置(左或右)</param> |
| | | /// <param name="frame">父容器</param> |
| | | /// <param name="btnName">备注控件</param> |
| | | /// <param name="btnImage">图标备注控件</param> |
| | | /// <param name="btnNameWidth">备注控件宽度</param> |
| | | /// <param name="btnNameWidthMaxValue">备注控件宽度最大值</param> |
| | | /// <param name="parentDefaultWidthMaxValue">父控件宽度默认最大值</param> |
| | | public void CustomCalculationWidth(Orientation orientation, FrameLayout frame, Button btnName, Button btnImage, int btnNameWidth,int btnNameWidthMaxValue = 110, int parentDefaultWidthMaxValue = 101) |
| | | { |
| | | |
| | | if (this.ChildrenCount <= 0 || btn == null) |
| | | { |
| | | return false; |
| | | } |
| | | for (int i = 0; i < this.ChildrenCount; i++) |
| | | { |
| | | View view = this.GetChildren(i); |
| | | if (view == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (view is Button) |
| | | { |
| | | if (view.Name == btn.Name) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | int parentRightX = 226; |
| | | int parentLeftX = 16; |
| | | |
| | | |
| | | if (btnName.GetTextWidth() > Application.GetRealWidth(btnNameWidth)) |
| | | { |
| | | frame.Width = Application.GetRealWidth(parentDefaultWidthMaxValue - btnNameWidth) + btnName.GetTextWidth(); |
| | | if (orientation == Orientation.right) |
| | | { |
| | | frame.X = Application.GetRealWidth(parentRightX + btnNameWidth) - btnName.GetTextWidth(); |
| | | } |
| | | else if (orientation == Orientation.left) |
| | | { |
| | | frame.X = Application.GetRealWidth(parentLeftX); |
| | | } |
| | | btnName.Width = btnName.GetTextWidth(); |
| | | btnImage.X = btnName.Right + Application.GetRealWidth(8); |
| | | } |
| | | return false; |
| | | |
| | | if (btnName.GetTextWidth() > Application.GetRealWidth(btnNameWidthMaxValue)) |
| | | { |
| | | |
| | | btnName.Width = Application.GetRealWidth(btnNameWidthMaxValue); |
| | | if (orientation == Orientation.right) |
| | | { |
| | | frame.X =Application.GetRealWidth(parentRightX+ btnNameWidth) - btnName.Width; |
| | | } |
| | | else if (orientation == Orientation.left) |
| | | { |
| | | frame.X = Application.GetRealWidth(parentLeftX); |
| | | } |
| | | frame.Width = Application.GetRealWidth(parentDefaultWidthMaxValue - btnNameWidth) + btnName.Width; |
| | | btnImage.X = btnName.Right + Application.GetRealWidth(8); |
| | | } |
| | | |
| | | } |
| | | |
| | | public enum Orientation |
| | | { |
| | | left, |
| | | right, |
| | | |
| | | } |
| | | } |
| | | } |