OnTouch Listener 와 OnGesture Listener 의 차 이 를 상세히 이야기 하 다.

Android 이벤트 처리 체 제 는 Listener 를 바탕 으로 이 루어 진 것 입 니 다.예 를 들 어 터치 스크린 과 관련 된 사건 은 OnTouch Listener 를 통 해 이 루어 진 것 입 니 다.제스처 는 OnGesture Listener 를 통 해 이 루어 진다.그렇다면 이 두 가 지 는 어떤 연관 이 있 을 까?
OnTouchListener
OnTouch Listener 인터페이스 에는 onTouch()방법 이 포함 되 어 있 습 니 다.예 를 직접 보 세 요.

public class MainActivity extends Activity implements OnTouchListener {
	public void onCreate(Bundle outState) {
  	super.onCreate(outState);
  	setContentView(R.layout.main);
  	TextView tv = (TextView) findViewById(R.id.tv);
  	tv.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent event) {
  	Toast.makeText(this, "Touch Touch", Toast.LENGTH_SHORT).show();
		return false ; 
  }
}
우 리 는 MotionEvent 의 getAction()방법 을 통 해 터치 이벤트 의 유형 을 얻 을 수 있 습 니 다.ACTION 을 포함 합 니 다.DOWN(터치 스크린 을 누 르 고),ACTIONMOVE(터치 스크린 누 르 고 힘 받 는 지점 이동),ACTIONUP(터치 스크린 풀 기)와 ACTIONCANCEL(사용자 가 직접 터치 하지 않 음).사용자 의 서로 다른 조작 에 대한 판단 을 통 해 getRawX(),getRawY(),getX()와 getY()등 방법 을 결합 하여 좌 표를 얻 은 후에 우 리 는 특정한 단 추 를 드래그 하고 스크롤 바 를 드래그 하 는 등 기능 을 실현 할 수 있 습 니 다.
OnTouchListener 는 세 가지 터치 이벤트 만 감청 할 수 있 습 니 다.즉,누 르 고 이동 하고 풀 고 더 블 클릭,미끄럼,길 게 누 르 는 등 복잡 한 제스처 조작 을 감청 하려 면 이 럴 때 OnGesture Listener 를 사용 해 야 합 니 다.
OnGestureListener
이 어 위의 예 를 들 어 이번 에는 제스처 감청 을 넣 었 다.

public class MainActivity extends Activity implements OnTouchListener, OnGestureListener {
	private GestureDetector mGestureDetector; 

	public void onCreate(Bundle outState) {
  	super.onCreate(outState);
  	setContentView(R.layout.main);

  	mGestureDetector = new GestureDetector(this);
  	TextView tv = (TextView) findViewById(R.id.tv);
  	tv.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent event) {
  	return mGestureDetector.onTouchEvent(event);
  }

  //        , 1 MotionEvent ACTION_DOWN   
  public boolean onDown(MotionEvent arg0) {
		Log.i("MyGesture", "onDown");
		Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();   
		return true;
	}

	//        ,       ,   1 MotionEvent ACTION_DOWN  ,    onDown()   ,               
	public void onShowPress(MotionEvent e) {
		Log.i("MyGesture", "onShowPress");      
		Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();
	}

	//   (      )  ,   1 MotionEvent ACTION_UP  

	public  boolean onSingleTapUp(MotionEvent e) {
		Log.i("MyGesture", "onSingleTapUp");
		Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();
		return true;
	}

	//        、       , 1 MotionEvent ACTION_DOWN,   ACTION_MOVE, 1 ACTION_UP      

	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  
		Log.i("MyGesture", "onFling");
		Toast.makeText(this, "onFling", Toast.LENGTH_LONG).show();   
		return true;
	}

 	//        ,   , 1 MotionEvent ACTION_DOWN,   ACTION_MOVE  

	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {      
		Log.i("MyGesture", "onScroll");
 		Toast.makeText(this, "onScroll", Toast.LENGTH_LONG).show();
		return true;
 	}

 	//        ,   MotionEvent ACTION_DOWN  

	public  void onLongPress(MotionEvent e) {
		Log.i("MyGesture", "onLongPress");
		Toast.makeText(this, "onLongPress", Toast.LENGTH_LONG).show();
 	}
}
이상 의 이 상세 한 이 야 기 는 OnTouchListener 와 OnGesture Listener 의 차이 점 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기