Как создать событие «ontouch» для моей кнопки в xamarin mvvmcross? - PullRequest
0 голосов
/ 11 февраля 2019

В моем проекте я пытаюсь создать звуковую кнопку, подобную той, которая использует Whatsap, когда вы продолжаете нажимать, начинаете запись и нажимаете кнопку остановки записи. Я нашел решения, где он использует 2 кнопки, одну для запуска и однузаканчивать.мне нужно, чтобы при нажатии и отпускании одной и той же кнопки я выполнял свой код.Я не нашел никакой реализации события, которое я пытаюсь запечатлеть.Не могли бы вы помочь мне с этим?это моя кнопка в файле axml

 <android.support.design.widget.FloatingActionButton
                android:id="@+id/btn_record"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right"
                android:src="@drawable/ic_micro"
                android:layout_marginRight="15dp"
                android:layout_marginBottom="15dp"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:theme="@style/ControlsTheme"
                local:MvxBind="Click RecordAudioClick; Visibility Visibility(RecordAudioVisibility); Touch Touch" />

это мой код в модели представления

  public MvxCommand Touch
    {
        get
        {
            return new MvxCommand(() =>
            {
                UserDialogs.Instance.Toast(new ToastConfig(Pressed Button")
                 .SetDuration(3000)
                 .SetMessageTextColor(System.Drawing.Color.White)
                 .SetBackgroundColor(System.Drawing.Color.Black)
                 .SetPosition(ToastPosition.Top));
            });
        }
    }

1 Ответ

0 голосов
/ 11 февраля 2019

В Android вы можете подписаться на событие Touch:

button.Touch += OnButtonTouch;

private void OnButtonTouch(object sender, View.TouchEventArgs args)
{
    var handled = false;
    if (args.Event.Action == MotionEventActions.Down)
    {
        // do stuff when pressed
        handled = true;
    }
    else if (args.Event.Action == MotionEventActions.Cancel ||
             args.Event.Action == MotionEventActions.Up)
    {
        // do stuff when released
        handled = true;
    }

    args.Handled = handled;
}

В iOS этот код похож на:

button.TouchDown += OnButtonTouchDown;
button.TouchUpInside += OnButtonTouchUpInside;

private void OnButtonTouchDown(object sender, EventArgs e)
{
    // do stuff when pressed
}

private void OnButtonTouchUpInside(object sender, EventArgs e)
{
    // do stuff when released
}
...