| 
 | 
|  | Neste artigo vou apresentar a view Image do Xamarin.Forms apresentando seus principais recursos e mostrando como tornar uma imagem clicável com GestureRecognizer. | 
No artigo anterior apresentei algumas das propriedades da view Image mostrando como podemos exibir imagens locais e remotas.
Neste artigo vou mostrar como tornar uma imagem clicável usando os recursos da classe GestureRecognizer.
A view Image não possui um evento de clique ou toque que podemos usar para interação com o usuário.
Para podermos obter uma interação com a view Image podemos adicionar o gesto de toque à view de forma que ele seja utilizado para detecção de toque.
O gesto de toque é implementado usando a classe TapGestureRecognizer. (Nota : esse recurso pode ser adicionar a outras views)
Para tornar um elemento de interface do usuário clicável com o gesto de toque fazemos assim:
| 1    var tapGestureRecognizer = new TapGestureRecognizer();
  
2   tapGestureRecognizer.Tapped += (s, e) => {
        // código para executar após o toque
     };
3   image.GestureRecognizers.Add(tapGestureRecognizer); | 
Por padrão a imagem irá responder a um único toque.
Para alterar esse comportamento configure a propriedade NumberOfTapsRequired para aguardar um toque duplo (ou mais toques se necessário).
tapGestureRecognizer.NumberOfTapsRequired = 2;    // toque duplo
						Quando NumberOfTapsRequired for definido com um valor acima de um, o manipulador de eventos será executado somente se os toques ocorrerem dentro de um determinado período de tempo (este período não é configurável). Se o segundo (e os demais) toque ocorrer dentro deste prazo eles são ignorados e a contagem é reiniciada.
Um reconhecedor de toque pode ser adicionado a um controle via código XAML usando propriedades anexadas.
A sintaxe para adicionar um TapGestureRecognizer a uma imagem pode ser vista a seguir:
| <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App_Image.Pagina1">
  <StackLayout VerticalOptions="Center" HorizontalOptions="Center">
    <Image Source="maco1b.jpg">
        <Image.GestureRecognizers>
            <TapGestureRecognizer
                    Tapped="OnTapGestureRecognizerTapped"
                    NumberOfTapsRequired="2" />
      </Image.GestureRecognizers>
    </Image>  </StackLayout>
</ContentPage> | 
Como exemplo vamos implementar um reconhecedor de toque à uma imagem de forma a oferecer uma melhor experiência ao usuário.
Requisitos necessários :
Tornando uma imagem clicável com GestureRecognizer
Abra o projeto App_Image criado no artigo anterior.
Agora abra o arquivo App.cs do projeto App.Image e altere o código conforme abaixo:
| using System.Threading.Tasks;
using Xamarin.Forms;namespace App_Image
{
    public class App : Application
    {
        public App()
        {
            Image imagemMonkey = new Image
            {
                Source = "monkey.png",
                Aspect = Aspect.AspectFit,
                HorizontalOptions = LayoutOptions.End,
                VerticalOptions = LayoutOptions.Fill
            };            var tapGestureRecognizer = new TapGestureRecognizer();            tapGestureRecognizer.Tapped += async (s, e) =>
            {
                imagemMonkey.Opacity = .5;
                await Task.Delay(1000);
                imagemMonkey.Opacity = 1;
            };            imagemMonkey.GestureRecognizers.Add(tapGestureRecognizer);            MainPage = new ContentPage
            {
                BackgroundColor = Color.Silver,                Content = new StackLayout
                {
                    Spacing = 0,
                    VerticalOptions = LayoutOptions.Center,
                    Orientation = StackOrientation.Vertical,
                    Children = { imagemMonkey }
                }
           };           
        }        protected override void OnStart()
        {
            // Handle when your app starts
        }        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
} | 
No código estamos tornando a imagem clicável e no manipulador de evento Tapped estamos usando a propriedade Opacity da imagem e os comandos ascyn e await para que a ação do delay seja executada de forma assíncrona.
Assim ao clicar na imagem ela escurecerá e após 1 segundo retornará a sua opacidade normal provocando a sensação de estar respondendo ao toque.
Executando o projeto iremos obter a primeira imagem, e, após clicar, veremos a segunda, que após 1 segundo retorna ao normal.
|  |  | 
			Pegue o 
projeto aqui :  
			 App_Image2.zip (sem as referências)
			App_Image2.zip (sem as referências)
Deus nunca foi visto por alguém. O Filho 
unigênito (Jesus), que está no seio do Pai, esse o revelou.
João 1:18
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
     
Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET

Xamarim Studio - Desenvolvimento Multiplataforma com C# (Android, iOS e Windows)
Xamarim - Criando Apps com o Visual Studio e C# (vídeo aula)
https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_binding_basics/