"NodeGrid"라는 사용자 정의 ViewGroup의 하위 인 "노드"라고하는 사용자 정의보기가 있습니다. "NodeGrid"클래스는 특히 RelativeLayout을 확장합니다.Android : 사용자 정의보기 그룹에서 사용자 정의보기로 onTouchEvent 사용
내 사용자 정의 뷰 클래스에 다음 코드 ("노드") 한 :
이private boolean isBeingDragged = false;
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
isBeingDragged = true;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
isBeingDragged = false;
}
else if (event.getAction() == MotionEvent.ACTION_MOVE)
{
if (isBeingDragged)
{
float xPosition = event.getX();
float yPosition = event.getY();
//change the x and y position here
}
}
return false;
}
문제는 : onTouchEvent가
이 코드에 브레이크 포인트를 설정을 가진 후, 그것은 보인다처럼 MotionEvent.ACTION_DOWN 경우에만 호출되지만 다른 두 경우 ("작업 실행"또는 "동작 이동") 중 하나에 대해서는 호출되지 않습니다. 이 일이 일어날 수있는 손에서 벗어난 것을 아는 사람이 있습니까?
또한 (관련이있을 수 있습니다) :
는 뷰는 뷰 그룹에 추가됩니다 방법 중요합니까? "addView"외에도 "addFocusables"및 "addTouchables"와 같은 ViewGroup에 자식을 추가하는 다른 방법이 있다는 것을 알았습니다. 지금은 단순히 "addView"를 사용하여 ViewGroup에 자식 뷰를 추가하는 것입니다. SDK Documentation에서
"SDK Documentation"링크에는 해당 페이지의 onTouch() 메소드 세부 정보가 없습니다 (링크가 변경되었을 수 있음). 그럼에도 불구하고 대답은 정확합니다. – vedant1811
인용 된 텍스트는 여전히 링크 된 페이지에 있습니다. 이벤트 청취자 섹션의 끝. – Devunwired
오 그렇습니다. 사실입니다. 내 잘못이야 – vedant1811