黄学彪
2020-09-22 ade5917841b0fdcb1df7353ef7c56b1a1bdc9282
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
using System;
using System.Collections.Generic;
using Shared.Phone.UserCenter;
 
namespace Shared.Phone.Category
{
    /// <summary>
    /// 场景执行目标添加延时的界面
    /// </summary>
    public class AdjustTargetAddDelayTimeForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
 
        /// <summary>
        /// 确定选择的事件
        /// </summary>
        public Action<int> FinishSelectEvent = null;
 
        #endregion
 
        #region ■ 初始化_____________________________
 
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_delayTime">延时时间</param>
        public void ShowForm(int i_delayTime)
        {
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.AddDelayTime));
 
            //初始化中部信息
            this.InitMiddleFrame(i_delayTime);
        }
 
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame(int i_delayTime)
        {
            int selectTime = i_delayTime;
            if (selectTime == 0)
            {
                //默认1秒
                selectTime = 1;
            }
 
            //图标第一层底色
            var frameFirstBack = new FrameLayout();
            frameFirstBack.Y = Application.GetRealHeight(118);
            frameFirstBack.Height = this.GetPictrueRealSize(207);
            frameFirstBack.Width = this.GetPictrueRealSize(207);
            frameFirstBack.BackgroundColor = UserCenterColor.Current.White;
            frameFirstBack.Radius = (uint)this.GetPictrueRealSize(207) / 2;
            frameFirstBack.Gravity = Gravity.CenterHorizontal;
            bodyFrameLayout.AddChidren(frameFirstBack);
            //防止出现误差
            int iconWidth = this.GetPictrueRealSize(207) - this.GetPictrueRealSize(12) - this.GetPictrueRealSize(12);
            //图标第二层底色
            var btnSecondBack = new NormalViewControl(iconWidth, iconWidth, false);
            btnSecondBack.BackgroundColor = 0xfffef1ed;
            btnSecondBack.Radius = (uint)iconWidth / 2;
            btnSecondBack.Gravity = Gravity.Center;
            frameFirstBack.AddChidren(btnSecondBack);
            //图标
            var btnIcon = new IconViewControl(124);
            btnIcon.UnSelectedImagePath = "Item/Timer.png";
            btnIcon.Gravity = Gravity.Center;
            frameFirstBack.AddChidren(btnIcon);
 
            //为你的动作创建时间间隔
            var btnMsg = new NormalViewControl(700, 62, true);
            btnMsg.Y = frameFirstBack.Bottom + Application.GetRealHeight(34);
            btnMsg.TextSize = 15;
            btnMsg.TextID = R.MyInternationalizationString.SelectTimeForAction;
            btnMsg.TextAlignment = TextAlignment.Center;
            btnMsg.Gravity = Gravity.CenterHorizontal;
            bodyFrameLayout.AddChidren(btnMsg);
 
            //白色背景控件
            var frameWhiteBack = new FrameLayout();
            frameWhiteBack.BackgroundColor = UserCenterColor.Current.White;
            frameWhiteBack.Y = Application.GetRealHeight(611);
            frameWhiteBack.Height = Application.GetRealHeight(1500);//超过底部即可
            frameWhiteBack.Radius = (uint)Application.GetRealHeight(58);
            bodyFrameLayout.AddChidren(frameWhiteBack);
            //滑动控件
            var pickView = new UIPickerView();
            pickView.Y = Application.GetRealHeight(127);
            pickView.Height = Application.GetRealHeight(153 * 3);
            frameWhiteBack.AddChidren(pickView);
 
            //分
            string strMinute = Language.StringByID(R.MyInternationalizationString.uMinute);
            //秒
            string strSecond = Language.StringByID(R.MyInternationalizationString.uSecond);
            var listfirst = new List<string>();
            var listSecond = new List<List<string>>();
            for (int i = 0; i <= 59; i++)
            {
                listfirst.Add(i.ToString().PadLeft(2, '0') + strMinute);
                var listTemp = new List<string>();
                for (int j = 0; j <= 59; j++)
                {
                    if (i == 0 && j == 0)
                    {
                        continue;
                    }
                    listTemp.Add(j.ToString().PadLeft(2, '0') + strSecond);
                }
                listSecond.Add(listTemp);
            }
            //加一个60分钟吧
            listfirst.Add("60" + strMinute);
            var listTemp2 = new List<string>() { "00" + strSecond };
            listSecond.Add(listTemp2);
 
            int firstIndex = selectTime / 60;
            int secondIndex = selectTime % 60;
            //因为0分的时候,它是从1秒开始的,所以它的索引需要-1
            if (firstIndex == 0) { secondIndex--; }
 
            pickView.setPicker(listfirst, listSecond);
            pickView.setCurrentItems(firstIndex, secondIndex, 0);
            pickView.OnSelectChangeEvent += (value1, value2, value3) =>
            {
                int minute = Convert.ToInt32(listfirst[value1].Substring(0, 2));
                int second = Convert.ToInt32(listSecond[value1][value2].Substring(0, 2));
                selectTime = minute * 60 + second;
            };
 
            //完成按钮
            var btnSave = new BottomClickButton();
            btnSave.TextID = R.MyInternationalizationString.uSave;
            bodyFrameLayout.AddChidren(btnSave);
            btnSave.ButtonClickEvent += (sender, e) =>
            {
                //选择的是同一个时间,则不触发回调函数
                if (i_delayTime == selectTime) { this.CloseForm(); }
                //调用回调函数
                this.FinishSelectEvent?.Invoke(selectTime);
                this.CloseForm();
            };
        }
 
        #endregion
 
        #region ■ 界面关闭___________________________
 
        /// <summary>
        /// 界面关闭
        /// </summary>
        public override void CloseFormBefore()
        {
            this.FinishSelectEvent = null;
 
            base.CloseFormBefore();
        }
 
        #endregion
    }
}