마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onTouchEvent와 onClick 같이 사용하기

0 추천
public class BoardPhotoShooting extends Activity {
 DragObject imgView;

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.board);

  imgView = new DragObject(getApplicationContext(), boardWidth, boardHeight);

  imgView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
       
      }
  });
 }
}

--------------------

class DragObject extends View {
        
 // 중략

 @Override
 public boolean onTouchEvent(MotionEvent event) {
  MU.TouchProcess(event);
   
  invalidate();
  return true;
 }
}

 

안녕하세요. 카메라 preview 화면에 이미지뷰를 하나 두고 터치해서 드래그하는 것과 클릭(또는 롱클릭)했을때 다이어로그를 띄우고 싶은데요.

드래그 먼저 view를 상속한 클래스를 하나 두고 touchEvent를 이용해 터치이벤트를 구현 후 activity에서 클릭이벤트를 구현했더니 클릭이벤트가 발생하지가 않더라구요.

touchEvent를 없애니 클릭이벤트 잘 작동하구요......

 

이럴경우 둘다 반응하게 하려면 어떻게 해야하나요?

혹시 도움될만한 자료라도 있으면 도움 부탁드립니다~! 

익명사용자 님이 2014년 10월 20일 질문

1개의 답변

0 추천
액티비티에 OnTouchListener implements 하시고 onTouch 오버라이드하세요

onTouch에서 MotionEvent 받아 오니까 MotionEvent 에 찍힌 값이

ACTION_MOVE인지 ACTION_UP, DOWN 인지 switch같은 걸로

판단해서 처리하세요 드래그, 클릭 구분 다 가능합니다.
익명사용자 님이 2014년 10월 20일 답변
답변 감사합니다. 그런데 그렇게해도 안되서....ㅠㅠ
onTouchEvent(MotionEvent event) 에서 event 조건문 switch나 if 돌려서 찍어보세요 원하시는 터치 반응에 어떤 액션이 날라오는지 확인하시고 거기에 맞춰서
개발진행하시면됩니다.

switch (event.getAction() & MotionEvent.ACTION_MASK) {
  case MotionEvent.ACTION_DOWN:
  case MotionEvent.ACTION_UP:
  case MotionEvent.ACTION_POINTER_UP:
  case MotionEvent.ACTION_POINTER_DOWN:
  case MotionEvent.ACTION_MOVE:
  등등..
}
액티비티에 onTouchListener 달았는데 정확히 어떻게 하면 될지...해봐도 안되네요 상세하게 설명 가능할까요??????ㅠ
...