0

onTouchEvent에 별난 문제가 있습니다. 화면 가장자리를 터치하면 작업 표시 줄 (안드로이드 동작 표시 줄이 아닌 ActionbarSherlock 사용)이 표시되고 동작 표시 줄의 높이를 수용하기 위해 "buttonClick" 버튼을 아래로 움직입니다.actionBar.show() 및 버튼 위치 변경을 트리거하기 위해 Android onTouch를 두 번 트리거해야합니다.

두 번만 터치하면 작동합니다. 첫 번째 터치에서는 동작 표시 줄이 표시되고 두 번째 터치에서는 단추가 아래로 이동합니다. 나는 처음 터치하는 동안 둘 다하지 않는 이유를 모르지만 내 주변 수색은 전혀 발화하지 않는 문제가있는 사람을 돌 렸습니다. 또는 한 두 사람은 onTouch가 인 경우에만 번만 발사하는 데 문제가있었습니다. 절대 한 번도.

코드가 아래와 같습니다. 누군가 이런 식으로 일하는 이유를 이해할 수 있도록 도와 주시면 감사하겠습니다. 이 모든 원인이되었다

public boolean onTouchEvent(MotionEvent event) { 
    int x = (int)event.getX(); 
    int y = (int)event.getY(); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      Log.v(TAG, "New Touch"); 
      Log.v(TAG, "Screen Width: "+ screen_width); 
      if (x >= (screen_width - 95)){ 
       int actionHeight = getSupportActionBar().getHeight(); 
       Log.v(TAG, ""+actionHeight); 
       thumbParams.setMargins(0,actionHeight,0,0); 
       thumbClick.setLayoutParams(thumbParams); 
       params.setMargins(0,actionHeight,0,0); 
        buttonClick.setLayoutParams(params); 
       getSupportActionBar().show(); 

      } 
     case MotionEvent.ACTION_MOVE: 
     case MotionEvent.ACTION_UP: 
    } 

return false; 
} 
+0

나는 터치 이벤트 처리기의 문제라고 생각하지 않습니다. 처음에는 버튼이 표시되지는 않지만 표시되는 막대가 표시되므로 버튼 이동 방법을 확인하십시오. 작업 표시 줄이 나타나기 때문에 코드가 실행 중임을 분명히 알 수 있습니다. – neo

+0

안녕하세요, 신고 해 주셔서 감사합니다. 나는 붙여 넣은 코드에서 여백을 조정하여 버튼을 움직인다. 수직 여백을 actionBar의 높이로 설정 한 다음 버튼의 매개 변수를 업데이트 된 매개 변수로 설정합니다. 나는 그것이 실행되기 때문에 당황하기 전에 단지 두 번째로 치게된다. 액션 바를 보여주는 코드 다음에 배치하려고했는데, 뭔가 이상한 일을하는 경우를 대비하여 숨겨진 부분은 높이가 0입니다. 어떻게 실행했는지에 차이는 없었습니다. –

+0

만지기 전에 버튼이 보이십니까? – neo

답변

1

특정 문제 getSupportActionBar().getHeight()의 값이 나는 여백에 할당하려고했던 지점에서 0이었다이었다. 이 문제를 해결하기 위해 지나치게 정교한 방법을 시도했지만 결과적으로 결국 getSupportActionBar().show();ACTION_UP으로 모든 것을 이동해야했습니다.

손가락이 너무 길면 눈에 띄지 않는 지연이있을 수 있지만 대부분의 경우 즉시 나타나고 첫 번째 클릭에서 작동합니다. 내 설명이 잘못 표현 된 경우에 대비하여 조정 코드를 입력했습니다.

public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      int x = (int)event.getX(); 
      int y = (int)event.getY(); 
      if (x >= (screen_width - 95)){ 
       getSupportActionBar().show(); 
      } 
     case MotionEvent.ACTION_MOVE: 
     case MotionEvent.ACTION_UP: 
      actionHeight = getSupportActionBar().getHeight(); 
      Log.v(TAG, ""+actionHeight); 

      thumbParams.setMargins(0, actionHeight, 0, 0); 
      params.setMargins(0, actionHeight, 0, 0); 
      thumbClick.setLayoutParams(thumbParams); 
      buttonClick.setLayoutParams(params); 
    } 

return false; 
} 
+0

덕분에 많은 도움이되었습니다. – Ethenyl