我有水平滚动视图的图库。当用户滑动滚动视图时,我会收听OnTouch事件并播放动画等。
基本上:
public bool OnTouch(Android.Views.View v, Android.Views.MotionEvent e)
{
switch (e.Action)
{
case MotionEventActions.Down:
System.Console.WriteLine("OnTouch > Down");
// Start Animation (change alpha imageviews in list to 100%)
break;
case MotionEventActions.Move:
System.Console.WriteLine("OnTouch > Move");
// Do something...
break;
case MotionEventActions.Up:
System.Console.WriteLine("OnTouch > Up");
// End Animation (change alpha imageviews in list to 50%)
break;
}
return true;
}
但是可以选择用户在控制中启动OnTouch事件,但最后是在聚焦控制之外移动他的触摸。所以行动' Up'不会跑。问题是如何处理这种情况 - 我想知道何时出现这种情况并以编程方式调用与操作中相同的代码' Up'。
事件列表如下:
答案 0 :(得分:0)
您必须使用MotionEventActions.Cancel
:
public bool OnTouch(Android.Views.View v, Android.Views.MotionEvent e)
{
switch (e.Action)
{
case MotionEventActions.Down:
System.Console.WriteLine("OnTouch > Down");
// Start Animation (change alpha imageviews in list to 100%)
break;
case MotionEventActions.Move:
System.Console.WriteLine("OnTouch > Move");
// Do something...
break;
case MotionEventActions.Up:
System.Console.WriteLine("OnTouch > Up");
// End Animation (change alpha imageviews in list to 50%)
break;
case MotionEventActions.Cancel:
System.Console.WriteLine("OnTouch > Cancel");
// End Animation (change alpha imageviews in list to 50%)
break;
}
return true;
}
public static final int ACTION_CANCEL
getActionMasked()的常量:当前手势已中止。 你不会再收到任何积分。你应该把它视为 一个向上的事件,但不执行你通常会采取的任何行动。