public class MyActivity extends Activity {
private Button btn_test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
btn_test = (Button)findViewById (R.id.btn_test);
btn_test.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick (View view) {
Log.d ("flw===>","onClick");
}
});
btn_test.setOnTouchListener (new View.OnTouchListener () {
@Override
public boolean onTouch (View view, MotionEvent motionEvent) {
Log.d ("flw===>","onTouch--"+motionEvent.getAction ());
return false;
}
});
}
@Override
public boolean dispatchTouchEvent (MotionEvent ev) {
Log.d ("flw===>","dispatchTouchEvent--"+ev.getAction ());
return super.dispatchTouchEvent (ev);
}
}
1.点击屏幕,log为dispatchTouchEvent--0
dispatchTouchEvent--2
dispatchTouchEvent--2
dispatchTouchEvent--1
0,1,2分别代表: public static final int ACTION_DOWN = 0;
public static final int ACTION_UP = 1;
public static final int ACTION_MOVE = 2;
2.点击按钮,log为dispatchTouchEvent--0
onTouch--0
dispatchTouchEvent--1
onTouch--1
onClick
dispatchTouchEvent 的返回值改为false或者true,button都接收不到事件了。返回super.xxx接收正常。
onTouch 返回false,可接收到click,true接收不到。true代表点击事件被ontouch截获。