Android的單擊雙擊事件

package com.dianchou.dcw.view.main.point;

import android.os.Handler;

import android.view.MotionEvent;

import android.view.View;

/**

* 創(chuàng)建者? ? yf

* 創(chuàng)建時(shí)間? 2018/8/28 17:12

* 描述 ? ? ? ${TODO}

*/

public class SingleDoubleClickListener implements View.OnTouchListener {

? ? //雙擊間四百毫秒延時(shí)

? ? private static int timeout = 400;

? ? //記錄連續(xù)點(diǎn)擊次數(shù)

? ? private int clickCount = 0;

? ? private Handler handler;

? ? private MyClickCallBack myClickCallBack;

? ? public interface MyClickCallBack {

? ? ? ? void oneClick();//點(diǎn)擊一次的回調(diào)

? ? ? ? void doubleClick();//連續(xù)點(diǎn)擊兩次的回調(diào)

? ? }

? ? public SingleDoubleClickListener(MyClickCallBack myClickCallBack) {

? ? ? ? this.myClickCallBack = myClickCallBack;

? ? ? ? handler = new Handler();

? ? }

? ? @Override

? ? public boolean onTouch(View v, MotionEvent event) {

? ? ? ? if (event.getAction() == MotionEvent.ACTION_DOWN) {

? ? ? ? ? ? clickCount++;

? ? ? ? ? ? handler.postDelayed(new Runnable() {

? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? ? ? if (clickCount == 1) {

? ? ? ? ? ? ? ? ? ? ? ? myClickCallBack.oneClick();

? ? ? ? ? ? ? ? ? ? } else if (clickCount == 2) {

? ? ? ? ? ? ? ? ? ? ? ? myClickCallBack.doubleClick();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? handler.removeCallbacksAndMessages(null);

? ? ? ? ? ? ? ? ? ? //清空handler延時(shí),并防內(nèi)存泄漏

? ? ? ? ? ? ? ? ? ? //計(jì)數(shù)清零

? ? ? ? ? ? ? ? ? ? clickCount = 0;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? //延時(shí)timeout后執(zhí)行run方法中的代碼

? ? ? ? ? ? }, timeout);

? ? ? ? }

? ? ? ? //讓點(diǎn)擊事件繼續(xù)傳播,方便再給View添加其他事件監(jiān)聽

? ? ? ? return true;

? ? }

}

使用舉例:

View button= findViewById(R.id.button);

view.setOnTouchListener(new MyClickListener

(new MyClickListener.MyClickCallBack() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void oneClick() {

? ? ? ? ? ? ? ? Toast.makeText(MainActivity.this, "單擊",

? ? ? ? ? ? ? ? Toast.LENGTH_SHORT).show();

? ? ? ? ? ? }

? ? ? ? ? ? @Override

? ? ? ? ? ? public void doubleClick() {

? ? ? ? ? ? ? ? Toast.makeText(MainActivity.this, "雙擊",

? ? ? ? ? ? ? ? Toast.LENGTH_SHORT).show();

? ? ? ? ? ? }

? ? ? ? }));

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容