2015-01-02 76 views
0

我有畫廊水平滾動視圖。當用戶滑動滾動視圖我聽OnTouch事件和播放動畫等Horizo​​ntalScrollView上的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事件,但他的移動觸摸結束外集中控制。所以行動'上'不會運行。問題是如何處理這種情況 - 我想知道什麼時候會出現這種情況,並以編程方式調用相同的代碼。

因此事件列表看起來像:

  • 01-02 13:53:33.417 I /單標準輸出(6759):OnTouch>向下
  • 01-02 13:53:33.537 I /單-stdout(6759):OnTouch>移動
  • 01-02 13:53:33.581 I /單標準輸出(6759):OnTouch>移動

回答

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():當前手勢已經中止。 您將不會再收到任何積分。您應該將此視爲 上漲事件,但不會執行您通常會執行的任何操作。