안드로이드 개발 아트 탐구 독서 노트(3장 View의 이벤트 시스템)
3.5View 슬라이딩 충돌
수평인지 세로로 미끄러지는지 누가 사건을 가로막았는지 어떻게 판단할 것인가.수평방향과 세로방향의 거리 차이나 수평방향과 세로방향의 속도에 따라 판단할 수 있다.
해결 방법 1.외부 차단법 클릭 이벤트는 모두 부모 용기의 차단 처리를 거쳐 부모 용기가 이 이벤트를 필요로 하면 차단하고 이 이벤트가 필요하지 않으면 차단하지 않습니다.외부 차단법은 부모 클래스의 onInterceptTouchEvent 방법을 다시 써야 합니다.그리고 주의해야 할 것은, ACTION에서DOWN에서 false를 반환합니다. ACTION을 차단하지 않습니다.DOWN 사건, 이 일은 ACTION을 차단하면DOWN 이벤트, 후속 이벤트는 모두 부류가 처리하여 하위 요소에 전달할 수 없습니다.그리고 ACTION에서...MOVE에서 차단 여부를 판단하고 마지막에 ACTIONUP에서 false를 반환합니다. ACTIONUP 이벤트는 의미가 없습니다.부모 컨테이너가 ACTION에 있는 경우UP에서 true를 반환하면 하위 요소가 ACTION을 수신하지 못합니다.UP 이벤트는 하위 요소의 onClick에서 수행할 수 없습니다.
2. 내부차단법 내부차단법은 부용기가 사건을 차단하지 않고 자원소에 맡겨 소비 여부를 판단하는 것을 말한다.하위 클래스의 dispatchTouchEvent를 다시 써야 합니다.그리고 부류도 기본적으로 차단 ACTIONDOWN 이외의 이벤트.이렇게 하면 하위 클래스가 RequestDisallowInterceptTouchEvent(false)를 호출할 때 부모 클래스가 필요한 이벤트를 계속 차단할 수 있습니다.
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
if( ){
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_UP:
break;
}
//
return super.dispatchTouchEvent(event);
}
왜 아바타가 ACTION을 차단할 수 없습니까DOWN 사건은요, ACTION 때문에...DOWN 이벤트는 FLAG 을 받지 않습니다.DISALOW_INTERCEPT의 영향으로 상위 클래스가 ACTION을 차단하면DOWN 이벤트, 다음 이벤트는 하위 요소에 전달할 수 없습니다.
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
return false;// ACTION_DOWN
}else{
return true;
}
}
ListView가 꼭대기까지 미끄러졌는지 판단하려면 먼저 첫 번째 보이는 위치가 0인지 판단하고 이를 바탕으로 getTop이 0보다 크다고 판단한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.