安卓觸控事件與單擊事件的區別
阿新 • • 發佈:2018-12-03
在學習了安卓的觸控事件和單擊事件後,我做了一個小實驗,從中總結出它們之間的區別。
實驗如下:
首先在activity_main.xml檔案中製作一個簡單的按鈕
在Java class檔案中設定對按鈕的單擊監聽,和觸控監聽:
package com.example.a13468.mydemo03; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i("onClick","單擊事件"); } }); btn.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //如果檢測活動觸控按下 if(event.getAction()==MotionEvent.ACTION_DOWN){ Log.i("onClick","按下螢幕"); } //如果檢測活動觸控擡起 else if(event.getAction()==MotionEvent.ACTION_UP){ Log.i("onClick","擡起螢幕"); } return true; /** * 如果返回為true觸控事件完全消耗了當前的事件,單擊事件不會被觸法。 * 如果返回為false觸控事件沒有完全消耗了當前的事件,單擊事件會被觸法。 * */ } }); } }
用Log.i語句可以在日誌檔案中看到詳細的變化
執行程式,點選按鈕,日誌檔案中我們可以看到日誌檔案只輸出了觸控監聽,說明程式只實現了觸控監聽。
當把class檔案中 38行程式碼返回值改成false時,執行程式,點選按鈕,日誌檔案中我們可以看到日誌檔案輸出了觸控監聽和單擊監聽,說明程式實現了兩個監聽:
原因是:如果返回為true觸控事件完全消耗了當前的事件,單擊事件不會被觸法。 如果返回為false觸控事件沒有完
同時可以得出結論,觸控事件和單擊事件的區別:單擊事件只觸法一個動作,但是觸控事件可以觸法多個動作。