Как добавить событие OnTouch в Android с помощью SkiaSharp

У меня проблема. Я использую SkiaSharp для создания TriangleGrid. Сейчас я рисую сетку, но теперь я хочу прикоснуться к треугольнику в сетке, чтобы раскрасить его. Для этого мне нужно добавить TouchEvent в SKCanvasView, но я не знаю, как это сделать.

В Интернете я могу найти следующий пример:

Но я использую Xamarin Android, и этот пример не работает в моем коде. Я также пробовал использовать:

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

Но это дает мне ошибку: «Невозможно назначить SetOnTouchListener, потому что это« группа методов »»

Может ли кто-нибудь помочь мне получить TouchListener на моем холсте SkiaSharp !?


person Vreesie    schedule 29.04.2019    source источник
comment
код github, на который вы смотрите, НЕ является образцом, который идет с документом рисования пальцами   -  person Jason    schedule 30.04.2019
comment
Вы можете сказать мне, что мне нужно добавить в файл .axml?   -  person Vreesie    schedule 30.04.2019
comment
Какой файл axml? Все ваши вопросы помечены тегом Xamarin.Forms, поэтому я предполагаю, что это то, что вы на самом деле используете, а не Xamarin Android. Вы окажете себе огромную услугу, если сядете и потратите время, чтобы просмотреть код образца раскраски для пальцев.   -  person Jason    schedule 30.04.2019
comment
Извините, моя ошибка ... Я использую xamarin.android. Мне нужен пример для xamarin.android   -  person Vreesie    schedule 30.04.2019
comment
см. TouchEffect.cs в проекте Android образца FingerPaint.   -  person Jason    schedule 30.04.2019
comment
Последняя ошибка, которую я получаю, когда я немного копирую TouchEffect.cs, находится в строке 197 со следующей ошибкой: 'TouchEffect' does not contain a definition for 'OnTouchAction' and no accessible extension method 'OnTouchAction' accepting a first argument of type 'TouchEffect' could be found (are you missing a using directive or an assembly reference?)   -  person Vreesie    schedule 30.04.2019


Ответы (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();
  }

or :

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;
      }
  }
person Leo Zhu - MSFT    schedule 30.04.2019
comment
stackoverflow.com/questions/55924506 / - person Vreesie; 30.04.2019