내 응용 프로그램에서는 단추 및 단추로 작동하는 다른보기에 간단한 애니메이션을 추가하려고합니다.내 뷰에 대해 내 onTouchListener가 호출되는 이유는 무엇입니까?
이렇게하려면 모든보기에 사용자 지정 onTouchListener를 설정하고 해당 뷰에서 startAnimation을 호출하십시오.
내 onTouch 방법은 다음과 같습니다
public boolean onTouch(View v, MotionEvent event) {
// Only show animation when enabled.
if (v.isEnabled()) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.startAnimation(shrink);
break;
case MotionEvent.ACTION_UP:
v.startAnimation(grow);
break;
}
}
return v.onTouchEvent(event);
}
사용자가 손가락을 놓을 때 사용자가 원래 크기로 버튼과 수익을 압박하면서보기는 작은 크기로 조정되므로이 확인을 작동합니다.
그러나 어떤 이유로 터치 된 단추 근처에있는 다른 단추도 UP 이벤트를 얻으므로 작은 애니메이션 깜박임이 발생합니다.
왜이게 더 중요합니까?이 성가신 행동을 어떻게 방지합니까?
편집 : 그냥 알기 쉽습니다. 이웃 뷰는 동일한 리스너 인스턴스에 등록되지만 내 손가락으로는 접촉되지 않습니다.
이 메서드에 logging 문을 추가하고 뷰 ID를 인쇄 해 두는 것이 좋습니다. 또한 활동의 onCreate 메소드에 몇 개의 후보 뷰 ID를 인쇄하십시오. 아마 당신이 볼 수있는 것은 놀랄만 한 것이 아니지만 최소한이 이벤트가 예상보기와 "이웃"보기 모두에서 실행되고 있는지 확인합니다. –