如何使用SkiaSharp在Android中添加OnTouch事件

问题描述 投票:0回答:1

我有个问题。我正在使用SkiaSharp制作一个TriangleGrid。现在我正在绘制网格,但现在我想触摸网格中的三角形来为它着色。要做到这一点,我需要在SKCanvasView中添加一个TouchEvent,但我不知道该怎么做。 在互联网上,我可以找到下一个例子:

但我正在使用Xamarin Android,这些示例在我的代码中不起作用。我也试过用:

skiaView = FindViewById<SkiaSharp.Views.Android.SKCanvasView>(Resource.Id.skiaView);
skiaView.SetOnTouchListener += OnTouch;

但这给了我错误:“无法分配给'SetOnTouchListener',因为它是'方法组'”

任何人都可以帮我在我的SkiaSharp画布上获得TouchListener!?

c# android xamarin.android skiasharp
1个回答
2
投票

您使用错误的方法添加事件,您可以像这样设置OnTouch事件:

skiaView= FindViewById<SKCanvasView>(Resource.Id.skiaView);
skiaView.Touch += onTouch;

private void onTouch(object sender, View.TouchEventArgs e)
  {
     Toast.MakeText(this, "touch", ToastLength.Short).Show();
  }

要么 :

public class MainActivity : AppCompatActivity,View.IOnTouchListener
  {
    private SKCanvasView skiaView;
    protected override void OnCreate(Bundle savedInstanceState)
      {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.Main);
        skiaView= FindViewById<SKCanvasView>(Resource.Id.skiaView);
        skiaView.SetOnTouchListener(this);  
        ...
      }
    public bool OnTouch(View v, MotionEvent e)
      {
        Toast.MakeText(this,"touch",ToastLength.Short).Show();
        return true;
      }
  }
© www.soinside.com 2019 - 2024. All rights reserved.