2014-01-12 62 views
0

我已經將這個onTouchListener像這樣同時...onTouch方法,如果和其他部分都運行在

myView.setOnTouchListener 
(
    new OnTouchListener() 
    { 
     @Override 
     public boolean onTouch(View view, MotionEvent event) 
     { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) 
      { 
       DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
       view.startDrag(null, shadowBuilder, view, 0);=System.out.println("ACTION DOWN"); 
       return true; 
      } 
      else 
      { 
       System.out.println("ACTION UP"); 
       return true; 
      } 
     } 
    } 
); 

的問題是,當我點擊並按住不放,「行動下」 AND「行動起來「都打印?什麼導致了這種行爲?

回答

1

請注意,onTouch()方法被調用每次你觸摸時,移動或離開屏幕。因此,當ACTION_DOWN不僅僅是ACTION_UP時,else結構中的語句被調用。

這裏可能是你想要什麼

if (event.getAction() == MotionEvent.ACTION_DOWN) 
    { 
     DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
     view.startDrag(null, shadowBuilder, view, 0);=System.out.println("ACTION DOWN"); 
     return true; 
    } 
    else if(event.getAction() == MotionEvent.ACTION_UP) 
    { 
     System.out.println("ACTION UP"); 
     return true; 
    } 
0

的MotionEvent.ACTION_DOWN當一個新的觸摸是這裏的一部分,如果在屏幕上開始反應。如果任何類型的MotionEvent的執行像ACTION_MOVE和ACTION_UP

和你的其他部分將執行。所以,如果你做一些事情上與ACTION_DOWN

所以,當你觸摸屏幕則執行你的這兩個事件的屏幕觸摸將必須執行ATLEAST ACTION_MOVE或ACTION_UP。

我認爲你必須使用多點觸摸,所以你可以使用MotionEvent.ACTION_POINTER_DOWN和MotionEvent.ACTION_POINTER_UP,這可以幫助你從單點觸摸事件中多一點點。

相關問題