一次click事件包括
MotionEvent.ACTION_DOWN
MotionEvent.ACTION_UP
因此先触发touch
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
onTouch方法中返回的参数为是否消费事件,若为true,则消费此事件,不会往后传递,即后面的click事件不会触发
public class ViewTestActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_test);
button=findViewById(R.id.btn);
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
LogUtil.d("touch");
return true;
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LogUtil.d("click");
}
});
}
}
MotionEvent.ACTION_DOWN
MotionEvent.ACTION_UP
按下和抬起两个事件,打印两次
若onTouch方法中返回的参数为false
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
LogUtil.d("touch");
return false;
}
});
则click事件会在touch事件后触发