コード例 #1
0
        void InitView()
        {
            var scrollView = new ScrollView()
            {
                //Padding = new Thickness(10, 20)
            };
            //Dictionary<string, int> hours = new Dictionary<string, int>();
            //for (int i = 0; i <= 23; i++)
            //{
            //    hours.Add(i + "小时", i);
            //}
            Dictionary<string, int> minutes = new Dictionary<string, int>();
            for (int i = 0; i <= 59; i++)
            {
                minutes.Add(i + "分钟", i);
            }
            Dictionary<string, int> seconds = new Dictionary<string, int>();
            for (int i = 0; i <= 60; i++)
            {
                seconds.Add(i + "秒钟", i);
            }
            Dictionary<string, int> readySeconds = new Dictionary<string, int>();
            for (int i = 1; i <= 5; i++)
            {
                readySeconds.Add(i + "秒钟", i);
            }
            //Picker hourPicker = new Picker()
            //{
            //    Title = "小时",
            //    HorizontalOptions = LayoutOptions.FillAndExpand
            //};
            //foreach (var hour in hours)
            //{
            //    hourPicker.Items.Add(hour.Key);
            //}
            //hourPicker.SelectedIndexChanged += delegate
            //{
            //    if (hourPicker.SelectedIndex == -1)
            //    {
            //        Hours = 0;
            //    }
            //    else
            //    {
            //        Hours = hours.ToArray()[hourPicker.SelectedIndex].Value;
            //    }
            //};
            Picker minutePicker = new Picker()
            {
                Title = "分钟",
                HorizontalOptions = LayoutOptions.FillAndExpand
            };
            foreach (var minute in minutes)
            {
                minutePicker.Items.Add(minute.Key);
            }

            minutePicker.SelectedIndexChanged += delegate
            {
                if (minutePicker.SelectedIndex == -1)
                {
                    Minutes = 0;
                }
                else
                {
                    Minutes = minutes.ToArray()[minutePicker.SelectedIndex].Value;
                }
            };
            Picker secondPicker = new Picker()
            {
                Title = "秒钟",
                HorizontalOptions = LayoutOptions.FillAndExpand

            };
            foreach (var second in seconds)
            {
                secondPicker.Items.Add(second.Key);
            }
            secondPicker.SelectedIndexChanged += delegate
            {
                if (secondPicker.SelectedIndex == -1)
                {
                    Seconds = 0;
                }
                else
                {
                    Seconds = seconds.ToArray()[secondPicker.SelectedIndex].Value;
                }
            };

            Picker readySecondPicker = new Picker()
            {
                Title = "秒钟",
                IsEnabled = false
            };
            foreach (var second in readySeconds)
            {
                readySecondPicker.Items.Add(second.Key);
            }
            readySecondPicker.SelectedIndex = readySeconds.ToList().FindIndex(w => w.Value == ViewModel.VoiceInterval);
            readySecondPicker.SelectedIndexChanged += delegate
            {
                if (readySecondPicker.SelectedIndex == -1)
                {
                    VoiceInterval = readySeconds.ToArray()[0].Value; ;
                }
                else
                {
                    VoiceInterval = readySeconds.ToArray()[readySecondPicker.SelectedIndex].Value;
                }
                //ViewModel.VoiceInterval = VoiceInterval;
            };

            PanelView panelView1 = new PanelView()
            {
                Text = "阶段时间点",
                TextColor = Color.FromHex("999"),
                UnderLineColor = Color.FromHex("999"),
                Content = new StackLayout()
                {
                    Orientation = StackOrientation.Horizontal,
                    Children =
                    {
                        //hourPicker,
                        minutePicker, secondPicker
                    }
                }
            };
            PanelView panelView2 = new PanelView()
            {
                Text = "播报间隔时间",
                TextColor = Color.FromHex("999"),
                UnderLineColor = Color.FromHex("999"),
                Content = readySecondPicker
            };

            Button saveButton = new Button()
            {

                HeightRequest = 40,
                Text = "确定",
                BackgroundColor = Consts.ThemeColor,
                TextColor = Color.White,
            };
            saveButton.Clicked += saveButton_Clicked;
            LineView line0 = new LineView()
            {
                HeightRequest = 10,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line1 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line2 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            //LineView line3 = new LineView()
            //{
            //    HeightRequest = 10,
            //    HorizontalOptions = LayoutOptions.FillAndExpand,
            //    BackgroundColor = Color.FromHex("#f7f7f7")
            //};
            scrollView.Content = new StackLayout()
            {
                Orientation = StackOrientation.Vertical,
                Children = {line0, panelView1, line1, panelView2, line2, new StackLayout()
                {
                    Padding = 10,
                    Children = {saveButton}
                } }
            };
            Content = scrollView;
        }
コード例 #2
0
        void InitView()
        {
            var scrollView = new ScrollView()
            {
                //Padding = new Thickness(10, 20)

            };
            entry = new Entry() { Placeholder = "请输入名称" };
            entry.SetBinding(Entry.TextProperty, "Name");
            PanelView panelView1 = new PanelView()
            {
                Text = "名称",
                TextColor = Color.FromHex("999"),
                UnderLineColor = Color.FromHex("999"),
                Content = entry
            };

            Dictionary<string, int> hours = new Dictionary<string, int>();
            for (int i = 0; i <= 2; i++)
            {
                hours.Add(i + "小时", i);
            }
            Dictionary<string, int> minutes = new Dictionary<string, int>();
            for (int i = 0; i <= 59; i++)
            {
                minutes.Add(i + "分钟", i);
            }
            Dictionary<string, int> seconds = new Dictionary<string, int>();
            for (int i = 0; i <= 60; i++)
            {
                seconds.Add(i + "秒钟", i);
            }
            Dictionary<string, int> readySeconds = new Dictionary<string, int>();
            readySeconds.Add("无",0);
            for (int i = 3; i <= 10; i++)
            {
                readySeconds.Add(i + "秒钟", i);
            }
            Picker hourPicker = new Picker()
            {
                Title = "小时",
                HorizontalOptions = LayoutOptions.FillAndExpand
            };
            foreach (var hour in hours)
            {
                hourPicker.Items.Add(hour.Key);
            }
            hourPicker.SelectedIndex = hours.ToList().FindIndex(w => w.Value == Hours);
            hourPicker.SelectedIndexChanged += delegate
            {
                if (hourPicker.SelectedIndex == -1)
                {
                    Hours = 0;
                }
                else
                {
                    Hours = hours.ToArray()[hourPicker.SelectedIndex].Value;
                }
                ViewModel.Duration = ComputeDuration();
            };
            Picker minutePicker = new Picker()
            {
                Title = "分钟",
                HorizontalOptions = LayoutOptions.FillAndExpand
            };
            foreach (var minute in minutes)
            {
                minutePicker.Items.Add(minute.Key);
            }
            minutePicker.SelectedIndex = minutes.ToList().FindIndex(w => w.Value == Minutes);
            minutePicker.SelectedIndexChanged += delegate
            {
                if (minutePicker.SelectedIndex == -1)
                {
                    Minutes = 0;
                }
                else
                {
                    Minutes = minutes.ToArray()[minutePicker.SelectedIndex].Value;
                }
                ViewModel.Duration = ComputeDuration();
            };
            Picker secondPicker = new Picker()
            {
                Title = "秒钟",
                HorizontalOptions = LayoutOptions.FillAndExpand

            };
            foreach (var second in seconds)
            {
                secondPicker.Items.Add(second.Key);
            }
            secondPicker.SelectedIndex = seconds.ToList().FindIndex(w => w.Value == Seconds);
            secondPicker.SelectedIndexChanged += delegate
            {
                if (secondPicker.SelectedIndex == -1)
                {
                    Seconds = 0;
                }
                else
                {
                    Seconds = seconds.ToArray()[secondPicker.SelectedIndex].Value;
                }
                ViewModel.Duration = ComputeDuration();
            };

            Picker readySecondPicker = new Picker()
            {
                Title = "准备时间",

            };
            foreach (var second in readySeconds)
            {
                readySecondPicker.Items.Add(second.Key);
            }
            readySecondPicker.SelectedIndex = readySeconds.ToList().FindIndex(w => w.Value == ViewModel.SecendsToReady);
            readySecondPicker.SelectedIndexChanged += delegate
            {
                if (readySecondPicker.SelectedIndex == -1)
                {
                    ReadySeconds = 0;
                }
                else
                {
                    ReadySeconds = readySeconds.ToArray()[readySecondPicker.SelectedIndex].Value;
                }
                ViewModel.SecendsToReady = ReadySeconds;
            };

            PanelView panelView2 = new PanelView()
            {
                Text = "方案时长",
                TextColor = Color.FromHex("999"),
                UnderLineColor = Color.FromHex("999"),
                Content = new StackLayout()
                {
                    Orientation = StackOrientation.Horizontal,
                    Children = { hourPicker, minutePicker, secondPicker }
                }
            };
            PanelView panelView3 = new PanelView()
            {
                Text = "准备时间",
                TextColor = Color.FromHex("999"),
                UnderLineColor = Color.FromHex("999"),
                Content = readySecondPicker
            };

            //text to speak engines
            var textToSpeak = DependencyService.Get<ITextToSpeech>().New().Init();
            //textToSpeak.NoEngine += delegate
            //{
            //    DependencyService.Get<Acr.XamForms.UserDialogs.IUserDialogService>().Toast("您的设备上没安装TTS引擎",2);
            //};
            PanelView engineView = null;
            if (textToSpeak.GetEngines().Count == 0)
            {

                var btn = new Button()
                {
                    Text = "无语音引擎 点击看详情",
                    TextColor = Color.White,
                    BackgroundColor = Consts.ThemeColor
                };

                btn.Clicked += delegate
                {
                    var uds = DependencyService.Get<Acr.XamForms.UserDialogs.IUserDialogService>();
                    uds.ActionSheet(new ActionSheetConfig()
                    {
                        Title = "安装语音引擎",
                        Options =
                        {
                            new ActionSheetOption("下载安装讯飞语音+", () =>
                            {
                                var url = "http://zhushou.360.cn/detail/index/soft_id/676960";
                                Device.OpenUri(new Uri(url));
                            }),
                            new ActionSheetOption("下载安装灵犀语音助手", () =>
                            {
                                var url = "http://zhushou.360.cn/detail/index/soft_id/194066";
                                Device.OpenUri(new Uri(url));
                                
                            }),
                            new ActionSheetOption("下载安装Google文字转语音 非汉语", () =>
                            {
                                var url = "http://zhushou.360.cn/detail/index/soft_id/885077";
                                Device.OpenUri(new Uri(url));
                                
                            }),
                        }
                    });
                };
                engineView = new PanelView()
                {
                    Text = "语音引擎",
                    TextColor = Color.FromHex("999"),
                    UnderLineColor = Color.FromHex("999"),
                    Content = btn
                };
            }
            else
            {

                Dictionary<string, string> engines = new Dictionary<string, string>();
                foreach (var engine in textToSpeak.GetEngines())
                {
                    engines.Add(engine.Label, engine.Name);
                }
                Picker enginePicker = new Picker()
                {
                    Title = "选择TTS语音引擎",
                    HorizontalOptions = LayoutOptions.FillAndExpand
                };
                foreach (var engine in engines)
                {
                    enginePicker.Items.Add(engine.Key);
                }
                enginePicker.SelectedIndex = engines.ToList().FindIndex(w => w.Value == ViewModel.VoiceEngine);
                enginePicker.SelectedIndexChanged += delegate
                {
                    if (enginePicker.SelectedIndex == -1)
                    {
                        ViewModel.VoiceEngine = engines.ToArray()[0].Value;
                    }
                    else
                    {
                        ViewModel.VoiceEngine = engines.ToArray()[enginePicker.SelectedIndex].Value;
                    }

                };
                engineView = new PanelView()
                {
                    Text = "语音引擎",
                    TextColor = Color.FromHex("999"),
                    UnderLineColor = Color.FromHex("999"),
                    Content = enginePicker
                };
            }
            textToSpeak.Dispose();
            stageListView = new ListView();
            var addStageBtn = new Button()
            {
                WidthRequest = 140,
                HeightRequest = 40,
                HorizontalOptions = LayoutOptions.Center,
                Text = "普通阶段",
                BackgroundColor = Consts.ThemeColor,
                TextColor = Color.White,
                Image = "ic_add_white_24dp.png"
            };
            addStageBtn.Clicked += addStageBtn_Clicked;
            var addFinalStageBtn = new Button()
            {
                WidthRequest = 140,
                HeightRequest = 40,
                HorizontalOptions = LayoutOptions.Center,
                Text = "冲刺阶段",
                BackgroundColor = Consts.ThemeColor,
                TextColor = Color.White,
                Image = "ic_add_white_24dp.png"
            };
            addFinalStageBtn.IsEnabled = !ViewModel.HasFinalStage;
            ViewModel.ObservableStages.CollectionChanged += delegate
            {
                addFinalStageBtn.IsEnabled = !ViewModel.HasFinalStage;
            };
            addFinalStageBtn.Clicked += addFinalStageBtn_Clicked;
            stageListView.Header = new StackLayout()
            {
                Padding = 10,
                Orientation = StackOrientation.Horizontal,
                HorizontalOptions = LayoutOptions.Center,
                Children = { addStageBtn, addFinalStageBtn }
            };
            stageListView.SetBinding(ListView.ItemsSourceProperty, "ObservableStages");
            stageListView.ItemTemplate = new DataTemplate(typeof(StagesViewCell));
            stageListView.HeightRequest = ViewModel.ObservableStages.Count * 45 + 70;
            stageListView.ItemTapped += stageListView_ItemTapped;
            PanelView panelView5 = new PanelView()
            {
                Text = "播报阶段设置",
                TextColor = Color.FromHex("999"),
                UnderLineColor = Color.FromHex("999"),
                Content = stageListView
            };

            Button saveButton = new Button()
            {

                HeightRequest = 40,
                Text = "保存",
                BackgroundColor = Consts.ThemeColor,
                TextColor = Color.White,
            };
            saveButton.Clicked += saveButton_Clicked;
            LineView line0 = new LineView()
            {
                HeightRequest = 10,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line1 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line2 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line3 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line4 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            LineView line5 = new LineView()
            {
                HeightRequest = 8,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                //BackgroundColor = Color.FromHex("#f7f7f7")
            };
            scrollView.Content = new StackLayout()
            {
                Orientation = StackOrientation.Vertical,
                Children = {line0, panelView1, line1, panelView2, line2, panelView3, line3, engineView, line4, panelView5, //line5, 
                    new StackLayout()
                    {
                        Padding = new Thickness(10,20),
                        Children = {saveButton}
                    }
                }
            };
            Content = scrollView;
            ViewModel.ObservableStages.CollectionChanged += ObservableStages_CollectionChanged;

        }