Android,Fragment 에서 감청 터치 이벤트 구현

이 글 은 프 래 그 먼 트 의 터치 사건 실현 을 감청 하 는 것 을 소개 한다.만약 에 여러분 이 더 좋 은 메커니즘 이 있다 면 댓 글 을 남 겨 서 교 류 를 할 수 있 습 니 다.다음은 상세 한 소 개 를 보 겠 습 니 다.
우리 액 티 비 티 에는 터치 사건 의 감청 을 실현 할 수 있 는onTouchEvent방법 이 있다 는 것 을 잘 알 고 있 습 니 다.
activity 의 터치 이벤트

 @Override
 public boolean onTouchEvent(MotionEvent event) {
  return super.onTouchEvent(event);
 }
그러나Fragment에 대해 서 는 이 방법 이 없다.만약 우리 가fragment에서 터치 사건 을 감청 하려 면 어떻게 해 야 할 까?
내 방법 은 터치 사건 의 배 포 를 스스로 실현 하 는 것 이다.
인터페이스 정의

public interface MyOnTouchListener {
  public boolean onTouch(MotionEvent ev);
 }
하나 더 만 들 기list저장 소listener

private ArrayList<MyOnTouchListener> onTouchListeners = new ArrayList<MyOnTouchListener>(
   10);
등록,소각 및 배포fragment터치 사건 을 나 누 어 주 고 터치 사건 을 응답 할 수 있 는 모든fragment에 게 나 누 어 준다.

 @Override
 public boolean dispatchTouchEvent(MotionEvent ev) {
  for (MyOnTouchListener listener : onTouchListeners) {
   if(listener != null) {
    listener.onTouch(ev);
   }
  }
  return super.dispatchTouchEvent(ev);
 }
 public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
  onTouchListeners.add(myOnTouchListener);
 }
 public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
  onTouchListeners.remove(myOnTouchListener) ;
 }
그러면fragment에서 우 리 는 이렇게 사용 하면 된다.모니터 를 초기 화한 다음 에activity에 등록 하고 모니터 에서 제스처 동작 을 감청 한다.

  onTouchListener = new MusicActivity.MyOnTouchListener() {
   @Override
   public boolean onTouch(MotionEvent ev) {
    gestureDetector.onTouchEvent(ev);
    return false;
   }
  };
  ((MusicActivity) getActivity()).registerMyOnTouchListener(onTouchListener);
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기