【问题标题】:How to add OnTouch Event in android with SkiaSharp如何使用 SkiaSharp 在 android 中添加 OnTouch 事件
【发布时间】:2019-04-30 09:34:45
【问题描述】:

我有问题。我正在使用 SkiaSharp 制作一个 TriangleGrid。现在我正在绘制网格,但现在我想触摸网格中的一个三角形来为它着色。为此,我需要向 SKCanvasView 添加一个 TouchEvent,但我不知道该怎么做。

在互联网上,我可以找到下一个示例:

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

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

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

谁能帮我在我的 SkiaSharp 画布上安装一个 TouchListener!?

【问题讨论】:

  • 您正在查看的 github 代码不是手指绘画文档附带的示例
  • 你能告诉我我需要在 .axml 文件中添加什么吗?
  • 什么 axml 文件?您的问题都用 Xamarin.Forms 标记,所以我认为这是您实际使用的,而不是 Xamarin Android。您可以坐下来花时间查看手指画示例的代码,这对您大有裨益。
  • 对不起,我的错...我正在使用 xamarin.android。我需要 xamarin.android 的示例
  • 在 FingerPaint 示例的 Android 项目中查看 TouchEffect.cs。

标签: c# android xamarin.android skiasharp


【解决方案1】:

你使用了错误的方法添加事件,你可以这样设置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;
      }
  }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多