其实Android要学或下功夫理解的东西(常用的重要的),说到底东西不多也不少
- 今天把View事件的传递写几篇笔记吧(系列)
- 这篇日记就一个目的:View的onClick事件是在onTouch事件之后才调用的,并且调用与否跟onTouch的返回值有关系。
/**
* -----------------------------------------------------------------
* Copyright (C) 2014-2016, by com.trident, All rights reserved.
* -----------------------------------------------------------------
* <p>
* Author: aaron
* <p>
* Create: 2018/8/21 下午5:22
* <p>
* Description:
*/
public class TouchAct extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_touch);
// 如果将这里改为ImageView,由于ImageView默认不可点击,所以在走onTouchEvent事件时,返回false导致后续
// click事件不会继续走下去
// 强烈建议这里自己换成ImageView打印日志看下就明白了
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG", "onClick execute");
}
});
button.setOnTouchListener(new View.OnTouchListener() {
// onTouch 返回true就认为这个事件被onTouch消费掉了,因而不会再继续向下传递,因此不会调用onClick
// 返回false就认为这个事件继续往下传递,会调用onClick
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG", "onTouch execute, action " + event.getAction());
// 这里返回false在看下效果
// 这里强推郭霖的View事件传递的2篇文章,仔细琢磨琢磨
// https://blog.csdn.net/guolin_blog/article/details/9097463
return true;
}
});
}
}
我截取的代码是直接可以新建个小工程,方便调试的,至于里面的id,xml,自己新建下就好了
网友评论