내 앱에 사용자 정의보기가 있습니다. 터치 이벤트를 감지하기 위해 둘 다 onTouchEvent() 메소드가 있습니다.onTouch는 항상 내 앱에서 두 번째 이벤트에 대한 반응을 표시합니다
사용자 정의보기 : onTouchEvent() - 메서드는 기본적으로 터치 된 객체를 표시합니다.
@Override
public boolean onTouchEvent(MotionEvent event) {
int maskedAction = event.getActionMasked();
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
touchedXY[0] = event.getX();
touchedXY[1] = event.getY();
mMatrix.mapPoints(touchedXY); // this is just for
event.setLocation(touchedXY[0], touchedXY[1]); // rotation purposes
for(int i = 0; i < mPoints[i]; i++){
mPoints[i].isSelected(setIsSelected(touchedXY)); //using method to
//check if point
//is selected
}
break;
default:
return false;
}
invalidate();
return true;
}
활동 : 객체가 터치되면 LinearLayout이 터치 된 점의 수와 함께 활동의 맨 아래에 나타납니다.
int key = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
List<AddressPoint> selectedPoints = Arrays.asList(mPoints);
if (key == 0) {
if (selectedPoints.size() > 0) {
key = 1;
test.setText(String.valueOf(selectedPoints.size()));
popup.setVisibility(View.VISIBLE);
} else {
test.setText(String.valueOf(selectedPoints.size()));
}
} else {
if (selectedPoints.size() > 0) {
test.setText(String.valueOf(selectedPoints.size()));
} else {
key = 0;
popup.setVisibility(View.GONE);
}
}
break;
default:
return false;
}
return false;
}
따라서 제대로 작동하지만 원하는대로 작동하지 않습니다. 액티비티는 두 번째 touchevent에만 반응하고 매 초 두 번째 touchevent를 새로 고칩니다. 예 :
- TouchEvent = 4 점 -> 활동에 팝업이 표시되지 않습니다.
- TouchEvent = 3 Points -> 활동이 숫자 "4"로 팝업을 표시합니다.
- TouchEvent = 1 Point -> Activity는 팝업 번호가 "3" 인 팝업을 표시합니다. . 등등 .
도와 주시면 감사하겠습니다.
Activity.onTouchEvent를 (를) 재정의하는 이유는 무엇입니까? – pskink
내 CustomView에서 터치 한 점을 표시해야하고 내 액티비티에서 점에 접촉했을 때 레이아웃에 대한 반응을 원합니다. 그래서 나는 그것을 무시해야한다. 왜냐하면 그것은 변화를 듣지 않을 것이기 때문이다. – Lyte
사용자 정의 수신기 인터페이스를 사용하십시오. – pskink