Monodroid中的KeyPressed / KeyReleased事件?

时间:2016-03-30 23:41:41

标签: c# android xamarin xamarin.android

我正试着在按住按钮的同时连续发送一些东西。它是Monodroid,所以我可以使用事件OnTouchEvent,但这不是我想要的。我想要的只是像KeyPressed()这样的事件,所以它会连续运行代码。

Monodroid中也没有KeyReleased()事件,这意味着我需要使用别的东西,也许是MotionEvent?我已经尝试过使用MotionEvent,但效果不佳。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用LongClick事件:

var button = new Button(this);
button.LongClick += (object sender, Android.Views.View.LongClickEventArgs e) => {
};

KeyPress事件:

button.KeyPress += (object sender, Android.Views.View.KeyEventArgs e) => {
};

参考:

修改

利用OnTouch事件识别motionEvent。

例如:

public class MyTouchListener 
    : Java.Lang.Object
    , View.IOnTouchListener
{
    public bool OnTouch(View v, MotionEvent e)
    {
        if (e.Action == MotionEventActions.Down)
        {
            // do stuff
            return true;
        }
        if (e.Action == MotionEventActions.Up)
        {
            // do other stuff
            return true;
        }

        return false;
    }
}

OR

    Button button = FindViewById<Button> (Resource.Id.myButton);
    var count = 0;
    var handled = false;
    button.Touch += (s, e) => {
        if(e.Event.Action == Android.Views.MotionEventActions.Down)
        {
            // Do stuff.
            System.Console.WriteLine("Counting ... " + count.ToString());
            count++;
            handled = true;
        }
        else if (e.Event.Action == Android.Views.MotionEventActions.Up)
        {
            // Do stuff.
            System.Console.WriteLine("Counting ... " + count.ToString());
            count++;
            handled = true;
        }
        e.Handled = handled;
    };

参考: