當我們點擊手機屏幕的時候Android系統不僅會觸發單擊事件,還會觸發觸摸事件。在Android中它會先觸發觸摸事件,如果這個觸摸事件沒有被消費掉再去觸發單擊事件
代碼示例:
MainActivty.java
package com.example.onclickandontoucl;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
//第一步:為按鈕添加點擊事件監聽器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("HHH","單擊事件");
}
});
//第二步:為按鈕添加觸摸事件監聽器
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
Log.i("HHH","按下");
}else if (event.getAction() == MotionEvent.ACTION_UP){
Log.i("HHH","抬起");
}
return false;
}
});
}
}
點擊圖中按鈕日志輸出如下:
如果把觸摸事件的返回值變為true表示觸摸事件被消費完了,不會再觸發單擊事件了
總結
單擊事件觸發一個動作,觸摸事件觸發兩個動作