你要么a.使用Touch
event:
button1.Touch += (s, e) =>
{
var handled = false;
if (e.Event.Action == MotionEventActions.Down)
{
// do stuff
handled = true;
}
else if (e.Event.Action == MotionEventActions.Up)
{
// do other stuff
handled = true;
}
e.Handled = handled;
};
或者你可以明确地实现IOnTouchListener
接口(C# 没有匿名类)。注意,在实现Java接口时,还需要继承自Java.Lang.Object
因为我们需要一个 Java 方面的句柄(当我们使用Touch
event).
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;
}
}
然后设置它:
button1.SetOnTouchListener(new MyTouchListener());
请注意,使用后一种方法还需要您处理对要在您的程序中修改的对象的引用的传递。OnTouchListener
类,C# 事件不需要这个。
EDIT:作为旁注,如果您使用Touch
活动或任何其他活动,请记住成为一个好公民,当您不再有兴趣接收该活动时,请取消该活动。最坏的情况是,如果您忘记取消挂钩事件,则会泄漏内存,因为实例无法清理。
因此,在第一个示例中,不要使用匿名方法:
button1.Touch += OnButtonTouched;
并记住将其解开:
button1.Touch -= OnButtonTouched;