日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android实现双击事件的两种方式

發布時間:2025/5/22 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实现双击事件的两种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Work around的方法是先監聽onTouch事件來監聽連續點擊次數,每次點擊都布置一個間隔時間的延時任務,延時任務執行時判斷間隔內是否還有點擊,如果沒有則發布點擊次數,重置計數。

實現代碼如下:

/*** 連續點擊事件監聽器 可以用作雙擊事件* */ public abstract class OnMultiTouchListener implements OnTouchListener {/*** 上次 onTouch 發生的時間*/private long lastTouchTime = 0;/*** 已經連續 touch 的次數*/private AtomicInteger touchCount = new AtomicInteger(0);private Runnable mRun = null;public void removeCallback() {if (mRun != null) {getMainLoopHandler().removeCallbacks(mRun);mRun = null;}}@Overridepublic boolean onTouch(final View v, final MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_UP) {final long now = System.currentTimeMillis();lastTouchTime = now;touchCount.incrementAndGet();//每點擊一次就移除上一次的延遲任務,重新布置一個延遲任務removeCallback();mRun = new Runnable() {@Overridepublic void run() {
            //兩個變量相等,表示時隔 multiTouchInterval之后沒有新的touch產生, 觸發事件并重置touchCount
if (now == lastTouchTime) {onMultiTouch(v, event, touchCount.get());touchCount.set(0);}}};postTaskInUIThread(mRun, getMultiTouchInterval());}return true;}/*** 連續touch的最大間隔, 超過該間隔將視為一次新的touch開始, 默認是400,推薦值,也可以由客戶代碼指定* * @return*/protected int getMultiTouchInterval() {return 400;}/*** 連續點擊事件回調* * @param v* @param event* @param touchCount* 連續點擊的次數* @return*/public abstract void onMultiTouch(View v, MotionEvent event, int touchCount); }

使用代碼:

mView.setOnTouchListener( new OnMultiTouchListener() {@Overridepublic void onMultiTouch(View v, MotionEvent event, int touchCount) {if (touchCount == 2) {//雙擊}}});

?

簡潔直接的方法是用GestureDector類:

mView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {GestureDetector detector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() {@Overridepublic boolean onSingleTapUp(MotionEvent e) {return super.onSingleTapUp(e);}@Overridepublic void onLongPress(MotionEvent e) {super.onLongPress(e);}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {return super.onScroll(e1, e2, distanceX, distanceY);}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {return super.onFling(e1, e2, velocityX, velocityY);}@Overridepublic void onShowPress(MotionEvent e) {super.onShowPress(e);}@Overridepublic boolean onDown(MotionEvent e) {return super.onDown(e);}@Overridepublic boolean onDoubleTap(MotionEvent e) {return super.onDoubleTap(e);}@Overridepublic boolean onDoubleTapEvent(MotionEvent e) {return super.onDoubleTapEvent(e);}@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {return super.onSingleTapConfirmed(e);}@Overridepublic boolean onContextClick(MotionEvent e) {return super.onContextClick(e);}});detector.onTouchEvent(event);return false;}});

?

轉載于:https://www.cnblogs.com/mosthink/p/5524758.html

總結

以上是生活随笔為你收集整理的Android实现双击事件的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。