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

우리는 비슷한 문제가있는 teaser이라는 LinearLayout을 가지고있었습니다 (잠시있었습니다). 어쨌든, 우리는이 "해킹"이 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 

솔직히 말해서 어떤 운이나 이유도 줄 수는 없지만 도움이 되었기를 바랍니다.

관련 문제