Szukaj…


Ustaw obraz jako dostępny do dodania, dodając TapGestureRecognizer

W TapGestureRecognizer dostępnych jest kilka domyślnych programów rozpoznających, jednym z nich jest TapGestureRecognizer .

Możesz dodać je do praktycznie dowolnego elementu wizualnego. Spójrz na prostą implementację, która wiąże się z Image . Oto jak to zrobić w kodzie.

var tappedCommand = new Command(() =>
{
    //handle the tap
});

var tapGestureRecognizer = new TapGestureRecognizer { Command = tappedCommand };
image.GestureRecognizers.Add(tapGestureRecognizer);

Lub w XAML:

<Image Source="tapped.jpg">
    <Image.GestureRecognizers>
        <TapGestureRecognizer
                Command="{Binding TappedCommand}"
                NumberOfTapsRequired="2" />
  </Image.GestureRecognizers>
</Image>

Tutaj polecenie ustawia się za pomocą powiązania danych. Jak widać, można również ustawić NumberOfTapsRequired aby włączyć więcej stuknięć przed podjęciem działania. Wartość domyślna to 1 dotknięcie.

Inne gesty to uszczypnięcie i przesuwanie.

Powiększ obraz gestem uszczypnięcia

Aby Image (lub inny element wizualny) można było PinchGestureRecognizer musimy dodać do niego PinchGestureRecognizer . Oto jak to zrobić w kodzie:

var pinchGesture = new PinchGestureRecognizer();
pinchGesture.PinchUpdated += (s, e) => {
// Handle the pinch
};
    
image.GestureRecognizers.Add(pinchGesture);

Ale można to również zrobić z XAML:

<Image Source="waterfront.jpg">
  <Image.GestureRecognizers>
    <PinchGestureRecognizer PinchUpdated="OnPinchUpdated" />
  </Image.GestureRecognizers>
</Image>

W dołączonej obsłudze zdarzeń należy podać kod, aby powiększyć obraz. Oczywiście można również zastosować inne zastosowania.

void OnPinchUpdated (object sender, PinchGestureUpdatedEventArgs e)
{
    // ... code here
}

Inne gesty to dotknij i przesuń.

Pokaż całą powiększoną zawartość obrazu za pomocą PanGestureRecognizer

Gdy masz powiększony Image (lub inną zawartość), możesz przeciągnąć go wokół Image aby wyświetlić całą jego zawartość w powiększonym stanie.

Można to osiągnąć poprzez wdrożenie PanGestureRecognizer. Z kodu wygląda to tak:

var panGesture = new PanGestureRecognizer();
panGesture.PanUpdated += (s, e) => {
  // Handle the pan
};

image.GestureRecognizers.Add(panGesture);

Można to również zrobić z XAML:

<Image Source="MonoMonkey.jpg">
  <Image.GestureRecognizers>
    <PanGestureRecognizer PanUpdated="OnPanUpdated" />
  </Image.GestureRecognizers>
</Image>

W zdarzeniu związanym z kodem możesz teraz odpowiednio obsługiwać panoramowanie. Użyj tej metody podpisu do obsługi:

void OnPanUpdated (object sender, PanUpdatedEventArgs e)
{
  // Handle the pan
}

Umieść pinezkę w miejscu, w którym użytkownik dotknął ekranu za pomocą MR.Gestures

Wbudowane rozpoznawanie gestów Xamarins zapewnia tylko bardzo podstawową obsługę dotykową. Np. Nie ma możliwości uzyskania pozycji dotykającego palca. MR.Gestures to komponent, który dodaje 14 różnych zdarzeń obsługi dotykowej. Pozycja dotykających palców jest częścią EventArgs przekazywanych do wszystkich zdarzeń MR.Gestures.

Jeśli chcesz umieścić pinezkę w dowolnym miejscu na ekranie, najprostszym sposobem jest użycie MR.Gestures.AbsoluteLayout który obsługuje zdarzenie Tapping .

<mr:AbsoluteLayout x:Name="MainLayout" Tapping="OnTapping">
    ...
</mr:AbsoluteLayout>

Jak widać, Tapping="OnTapping" wydaje się bardziej przypominać .NET niż składnia Xamarins z zagnieżdżonymi GestureRecognizers . Ta składnia została skopiowana z iOS i trochę pachnie dla programistów .NET.

W swoim kodzie możesz dodać OnTapping obsługi OnTapping następujący sposób:

private void OnTapping(object sender, MR.Gestures.TapEventArgs e)
{
    if (e.Touches?.Length > 0)
    {
        Point touch = e.Touches[0];
        var image = new Image() { Source = "pin" };
        MainLayout.Children.Add(image, touch);
    }
}

Zamiast zdarzenia Tapping można również użyć TappingCommand i powiązać z ViewModel, ale skomplikowałoby to wszystko w tym prostym przykładzie.

Więcej próbek do MR.Gestures można znaleźć w aplikacji GestureSample w GitHub i na stronie MR.Gestures . Pokazują one również, jak używać wszystkich innych zdarzeń dotykowych za pomocą programów obsługi zdarzeń, poleceń, MVVM, ...



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow