Вот пример того, как не использовать пользовательские жесты, просто используя Составные анимации следующим образом:
C #
async void Info_Clicked(object sender, EventArgs e)
{
await frame.ScaleTo(0.9, 2000);
await frame.ScaleTo(1, 2000);
}
================================= Update =====================================
При необходимости Длинные нажатия Жесты, Создание пользовательского Рамка :
public class FrameWithLongPress : Frame
{
public EventHandler LongPressActivated;
public void HandleLongPress(object sender, EventArgs e)
{
//Handle LongPressActivated Event
}
}
Android , настройка FrameRenderer (LongPressGestureRecognizerFrameRenderer):
[assembly: ExportRenderer(typeof(FrameWithLongPress), typeof(LongPressGestureRecognizerFrameRenderer))]
// FrameWithLongPress is created custom frame name in forms, LongPressGestureRecognizerFrameRenderer is renderer name
public class LongPressGestureRecognizerFrameRenderer : FrameRenderer
{
FrameWithLongPress view;
[Obsolete]
public LongPressGestureRecognizerFrameRenderer()
{
this.LongClick += async (sender, args) => {
Toast.MakeText(this.Context, "Long press is activated.", ToastLength.Short).Show();
await view.ScaleTo(0.9, 2000);
await view.ScaleTo(1, 2000);
};
}
protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
view = e.NewElement as FrameWithLongPress;
}
}
}
IOS , LongPressGestureRecognizerFrameRenderer:
[assembly: ExportRenderer(typeof(FrameWithLongPress), typeof(LongPressGestureRecognizerFrameRenderer))]
// FrameWithLongPress is created custom frame name in forms, LongPressGestureRecognizerFrameRenderer is renderer name
public class LongPressGestureRecognizerFrameRenderer : FrameRenderer
{
FrameWithLongPress view;
public LongPressGestureRecognizerFrameRenderer()
{
UILongPressGestureRecognizer uiLongPressGesture = new UILongPressGestureRecognizer(new Action(async () => {
await view.ScaleTo(0.9, 2000);
await view.ScaleTo(1, 2000);
}));
this.AddGestureRecognizer(uiLongPressGesture);
}
protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
view = e.NewElement as FrameWithLongPress;
}
}
}
XAML* используя пользовательскую рамку:
<local:FrameWithLongPress WidthRequest="300" HeightRequest="100" BackgroundColor="BlueViolet"/>