제스처를 거의 소비 할 필요가있는 뷰를 생성 중입니다. 이를 위해 ScaleGestureDetector와 GestureDetector를 만들었습니다. 리스너 클래스 하나를 만들었고 필요한 모든 인터페이스를 구현할 수 있다는 것을 깨달았습니다. 그래서 나는했다. 그들은 같은 클래스에서 온 때문 OnGestureListener 및 OnDoubleTapListener에 대한 총 의미가 있지만 :하나의 OnGestureListener 개체가 두 개의 GestureDetector 개체를 처리 할 수 있습니까?
- 는 ScaleGestureDetector는 자신의 리스너 클래스를 기대할 것인가?
- 같은 클래스에 만족하면 자체 개체가 필요합니까?
- 반대로 두 수신기에서 동일한 수신기를 사용해야합니까?
실험은 다음과 같은 확인했습니다
- 당신은 참으로 하나 개의 리스너 클래스를 사용할 수 있지만이 같은 이벤트를 소비하는 경우
- ScaleGestureDetector와 GestureDetector 서로를 성가 시게 할 수 있습니다. 그러나
당신이 항상 일정한 검출기를 실행하기 전에 isInProgress() 메소드를 체크 한 후 첫 번째로 규모 검출기를 호출하여이 상호 irking을 방지 할 수 있습니다 보인다
public boolean onTouchEvent(MotionEvent event) { //let the ScaleGestureDetector try first mScaleDetector.onTouchEvent(event); //if isInProgress() returns true then it's consuming the event if(mScaleDetector.isInProgress()) return true; //if isInProgress() returns false it isn't consuming the event //it's therefore safe to pass it to the regular detector mPrimaryDetector.onTouchEvent(event); return true; }
정말 환상적입니다. 감사합니다! 나는'ignoreMultiTouch'에 대해 전혀 몰랐다. –
그건 그렇고, "성가심"의 형태는 "MotionEvent"가 다른 청중을 추락시키는 방식으로 한 청취자 클래스에 의해 변경되는 것처럼 보였습니다. –
@Noel은 ignoreMultiTouch 매개 변수의 이름이 unused로 변경되었으며 더 이상 사용되지 않는 것처럼 보입니다. 이유를 모르겠다. – Flynn81