MainActivity.java에
코드시작package com.actionshin.touchevent;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.FrameLayout;
/**
* Created by ilsuk on 14. 12. 7..
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 1.뷰그룹을 생성한다.
CustomViewGroup viewGroup = new CustomViewGroup(this);
viewGroup.setBackgroundColor(Color.BLUE);
FrameLayout.LayoutParams viewGroupLp = new FrameLayout.LayoutParams(300, 300);
// 2.뷰를 생성한다.
CustomView view = new CustomView(this);
view.setBackgroundColor(Color.YELLOW);
FrameLayout.LayoutParams viewLp = new FrameLayout.LayoutParams(150, 150);
// 3.생성된 뷰를 뷰그룹에 추가한다.
viewGroup.addView(view, viewLp);
// 4.콘텐츠 영역에 생성된 뷰그룹을 추가한다.
setContentView(viewGroup, viewGroupLp);
}
/* 액티비티의 dispatchTouchEvent 함수를 재정의한다. */
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Log.e("shin", "Activity dispatchTouchEvent() >> " + ev.getAction());
return super.dispatchTouchEvent(ev);
}
/* 액티비티의 onTouchEvent 함수를 재정의한다. */
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e("shin", "Activity onTouchEvent() >> " + event.getAction());
return super.onTouchEvent(event);
}
}코드끝
노락박스가 뷰그룹이다. 뷰그룹에서 20px이상 move를 하면 뷰에게 전달되는 이벤트를 가로채게 된다.
Log에 찍힌 내용을 보자. 뷰그룹의 onInterceptTouchEvent가 true를 반환하여 이벤트를 가로채고, 자식뷰의 onTouchEvent함수는 ACTION_CANCEL(3)을 전달받게 된다.
'프로그래밍 > android' 카테고리의 다른 글
this (0) | 2014.12.08 |
---|---|
로그 남기기 (0) | 2014.12.08 |
MotionEvent 객체 (0) | 2014.12.04 |