private void CriarImagem(ImageSource imageSource, int idArquivo) { var img = new Image { Source = imageSource }; img.GestureRecognizers.Add(new TapGestureRecognizer(async sender => { //deseleciona todas foreach (var item in SelectorEstampasSpinner.Children) { var child = item as FrameEstampa; if (child != null) { child.OutlineColor = Color.Transparent; } } //seleciona a atual var parent = sender.Parent as FrameEstampa; if (parent != null) { parent.OutlineColor = Color.Aqua; } //habilita botao de remocao imgRemoveButton.IsVisible = true; selectedImage = parent; })); var retanguloSelecao = new FrameEstampa { idEstampa = idArquivo, Content = img, OutlineColor = Color.Transparent }; SelectorEstampasSpinner.Children.Add(retanguloSelecao); }
private void CriarPagina() { var alturaTela = Height; var larguraTela = Width; var paddingTela = alturaTela * .02f; var alturaEstampasPickerContainer = alturaTela * .05f; var alturaEstampasSelectorContainer = alturaTela * .5f; var larguraEstampasSelectorContainer = alturaTela * .9f; var alturaHeader = alturaTela * .20f; var alturaFooter = alturaTela * .08f; var alturaRecomentadaEstampa = alturaTela - alturaHeader - alturaFooter; Padding = new Thickness(paddingTela); BackgroundColor = COR_BACKGROUND_TELA; var SelectorRelatoriosText = new Label { Text = TEXT_RELATORIO, FontSize = FONTE_TEXTO_LABELS, TextColor = COR_TEXTO_LABELS, FontFamily = FAMILIA_TEXTO_LABELS, HorizontalTextAlignment = TextAlignment.Start, VerticalTextAlignment = TextAlignment.Center, HorizontalOptions = LayoutOptions.StartAndExpand, VerticalOptions = LayoutOptions.Center }; var imgRelatorio = new Image { Source = ImageSource.FromResource("VotacaoEstampas.Images.1484886998_6.png"), VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Start, }; imgRelatorio.GestureRecognizers.Add(new TapGestureRecognizer(async sender => { if (App.UltimaColecao.Votacoes != null && App.UltimaColecao.Votacoes.Count != 0) { await Navigation.PushAsync(new RelatorioPage()); } else { DisplayAlert("Não disponível", "Não há relatórios salvos.", "OK"); } })); var SelectorRelatorioContainer = new StackLayout { Orientation = StackOrientation.Horizontal, Spacing = 30, HeightRequest = alturaEstampasPickerContainer, Children = { imgRelatorio, SelectorRelatoriosText }, }; var imgAddButton = new Image { Source = ImageSource.FromResource("VotacaoEstampas.Images.icon_add_128.png"), VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.End, }; imgAddButton.GestureRecognizers.Add(new TapGestureRecognizer(async sender => { var arquivo = await CrossFilePicker.Current.PickFile(); if (arquivo != null) { if (imagensAdicionadas.Count == 0) { SelectorEstampasSpinner.Children.Clear(); } var dadosArquivo = arquivo.DataArray; var idArquivo = GetNextImageIndex(); Stream stream = new MemoryStream(dadosArquivo); CriarImagem(ImageSource.FromStream(() => { return(stream); }), idArquivo); imagensAdicionadas.Add(new KeyValuePair <int, byte[]> (idArquivo, dadosArquivo)); _estampasAlteradas = true; } })); imgRemoveButton = new Image { Source = ImageSource.FromResource("VotacaoEstampas.Images.icon_remove_128.png"), VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Start, IsVisible = false }; imgRemoveButton.GestureRecognizers.Add(new TapGestureRecognizer(async sender => { if (selectedImage != null) { if (SelectorEstampasSpinner.Children.Any((x) => x == selectedImage)) { var answer = await DisplayAlert("Excluir?", "Deseja realmente excluir esta espampa?", "Sim", "Não"); if (answer) { SelectorEstampasSpinner.Children.Remove(selectedImage); try { imagensAdicionadas.Remove(imagensAdicionadas.FirstOrDefault(x => x.Key == selectedImage.idEstampa)); } catch { } selectedImage = null; _estampasAlteradas = true; } } } })); var imgSelectorContainer = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.End, Children = { imgRemoveButton, imgAddButton }, }; var SelectorEstampasText = new Label { Text = TEXT_LBL_COLOR_SELECTED, FontSize = FONTE_TEXTO_LABELS, TextColor = COR_TEXTO_LABELS, FontFamily = FAMILIA_TEXTO_LABELS, FontAttributes = ATRIBUTOS_TEXTO_LABELS, HorizontalTextAlignment = TextAlignment.Start, VerticalTextAlignment = TextAlignment.Center, HorizontalOptions = LayoutOptions.StartAndExpand, VerticalOptions = LayoutOptions.Center }; var SelectorEstampasContainer = new StackLayout { Orientation = StackOrientation.Horizontal, HeightRequest = alturaEstampasPickerContainer, Children = { SelectorEstampasText, imgSelectorContainer }, }; var SelectorEstampasSizeHint = new Label { Text = string.Format("Tamanho recomendado para estampas é de {0}x{1} pixels.", Convert.ToInt32(larguraTela), Convert.ToInt32(alturaRecomentadaEstampa)), FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)), TextColor = COR_TEXTO_LABELS, HorizontalTextAlignment = TextAlignment.Start, VerticalTextAlignment = TextAlignment.Center, HorizontalOptions = LayoutOptions.StartAndExpand, VerticalOptions = LayoutOptions.Center }; SelectorEstampasSpinner = new StackLayout { Orientation = StackOrientation.Horizontal, Spacing = 0, }; var SelectorEstampasScroll = new ScrollView { Orientation = ScrollOrientation.Horizontal, HeightRequest = alturaEstampasSelectorContainer, WidthRequest = larguraEstampasSelectorContainer, Padding = new Thickness(0, 0, 0, 20), Content = SelectorEstampasSpinner }; var btnIniciarAplicacao = new CustomButton { Text = "Iniciar Aplicação", FontSize = FONTE_TEXTO_LABELS, FontFamily = FAMILIA_TEXTO_LABELS, FontAttributes = ATRIBUTOS_TEXTO_LABELS, HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, TextColor = COR_TEXTO_LABELS, BorderRadius = 20, HeightRequest = FONTE_TEXTO_LABELS + 30, CorBackgroundCustomRed = 30, CorBackgroundCustomGreen = 30, CorBackgroundCustomBlue = 30 }; btnIniciarAplicacao.Clicked += BtnIniciarAplicacao_Clicked;//async (sender, eventArgs) => var containerBtn = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, Padding = new Thickness(40, 10), Children = { btnIniciarAplicacao } }; // set conteudo da página Content = new StackLayout { //Padding = new Thickness(paddingTela), Orientation = StackOrientation.Vertical, VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, Children = { SelectorRelatorioContainer, SelectorEstampasContainer, SelectorEstampasSizeHint, SelectorEstampasScroll, btnIniciarAplicacao }, }; }