OnTouch事件ACTION_DOWN,ACTION_MOVE,ACTION_UP的事件拦截

今天看了郭神的  

Android事件分发机制完全解析,带你从源码的角度彻底理解(上) 对其中的一些细节还不是很理解,就自己测试了一下。

简单的给一个按钮注册了触摸事件:
button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: System.out.println("ACTION_DOWN.."); return false; case MotionEvent.ACTION_MOVE: System.out.println("ACTION_MOVE.."); return false; case MotionEvent.ACTION_UP: System.out.println("ACTION_UP.."); return true; } return true; } });

点击事件:
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { System.out.println("onClick.."); } });

发现当在ACTION_DOWN和ACTION_UP中返回true时,button的onClick事件就会被拦截掉,而在ACTION_MOVE中返回true却不会拦截onClick事件




你可能感兴趣的:(Android学习心得)