0

내 앱에 사용자 정의보기가 있습니다. 터치 이벤트를 감지하기 위해 둘 다 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를 새로 고칩니다. 예 :

  1. TouchEvent = 4 점 -> 활동에 팝업이 표시되지 않습니다.
  2. TouchEvent = 3 Points -> 활동이 숫자 "4"로 팝업을 표시합니다.
  3. TouchEvent = 1 Point -> Activity는 팝업 번호가 "3" 인 팝업을 표시합니다. . 등등 .

도와 주시면 감사하겠습니다.

+0

Activity.onTouchEvent를 (를) 재정의하는 이유는 무엇입니까? – pskink

+0

내 CustomView에서 터치 한 점을 표시해야하고 내 액티비티에서 점에 접촉했을 때 레이아웃에 대한 반응을 원합니다. 그래서 나는 그것을 무시해야한다. 왜냐하면 그것은 변화를 듣지 않을 것이기 때문이다. – Lyte

+0

사용자 정의 수신기 인터페이스를 사용하십시오. – pskink

답변

0

포인트가 저장되기 전에보기가 다시 그려지므로 문제가 발생합니다.

따라서 onTouch onTouchEvent에 포인트 수를 저장 한 다음 그에 따라 텍스트를 설정하는 다른 함수를 호출하는 것이 좋습니다.

+0

팝업은 사용자 지정 LinearLayout입니다. 내 팝업 개체에이 메서드를 사용할 수 없습니다. – Lyte

+0

변경된 답변보기, 도움이 되었으면 좋겠다. – Koogle

+0

미안하지만, 아직 이해가 안가. 즉, LinearLayout (팝업)은 정보를 표시하지만 이상한 순서에 불과합니다. LinearLayout을 "그리지"않는다. – Lyte