2011-12-03 5 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

コードを表示してください。さもなければ私達はちょうど周りに推測することができますありがとう! –

答えて

28

は、おそらくあなたはsuperイベントを返す代わりにtrueを返却する必要があります。つまり、あなたはそのイベントを処理したので、次のイベントを受け取ることができます。

1

私たちはLinearLayoutというteaserと呼ばれていましたが、同様の問題がありました(しばらくありました)。とにかく、この「ハック」が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 

正直なところ、あなたには韻や理由はありませんでしたが、うまくいけば助けてください。

関連する問題