2011-12-03 23 views
8

我从View扩展我的类。我重写onTouchEvent函数。但是,我只能得到ACTION_DOWN事件。不是任何ACTION_UP或ACTION_MOVE。我应该怎么做才能获得这些活动?为什么我总是从onTouchEvent获得ACTION_DOWN

我只覆盖onTouchEvent和onDraw函数。并且只有这种观点在应用

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    System.out.println("event:"+event.getAction()); 
    return super.onTouchEvent(event); 
} 
+1

请显示您的代码。否则,我们可以猜测。谢谢! – 2011-12-03 15:18:43

回答

28

也许你需要返回true而不是返回super事件。这意味着您处理了该事件,因此您可以收到下一个。

1

在工作中,我们有一个LinearLayoutteaser这是有类似的问题(这是一段时间)。无论如何,我们发现这个“黑客”似乎有助于从touch中获得一些额外的响应。

teaser.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent motionEvent) { 
     TransitionDrawable transition = (TransitionDrawable) v.getBackground(); 

     switch(motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       if(transition != null) transition.startTransition(250); 
       break; 
      case MotionEvent.ACTION_UP: 
       loadArticle(position); 
      case MotionEvent.ACTION_CANCEL: 
       if(transition != null) transition.reverseTransition(0); 
       break; 
     } 
     return false; 
    } 
}); 

// Has to be here for the touch to work properly. 
teaser.setOnClickListener(null); // <-- the important part for you 

我真的不能给你任何押韵或理由,但希望这有助于。

相关问题