Android監聽連續點擊次數代碼實現
一般實現
我們知道,一般實現雙擊事件,可以通過new OnClickListener()監聽點擊事件,然后記錄前后兩次點擊距離開機的時間,由時間差在一定范圍實現,代碼如下:
long firstClickTime = 0; @Override public void onClick(View view) { if(firstClickTime > 0){ long secondClickTime = SystemClock.uptimeMillis();//距離上次開機時間 long dtime = secondClickTime - firstClickTime; if(dtime > 500){ Toast.makeText(getApplicationContext(), "實現雙擊事件監聽", 0).show(); } else{ firstClickTime = 0; } return ; } firstClickTime = SystemClock.uptimeMillis(); }
Google實現算法
看完上面實現,思路很簡單,但是當要實現多次點擊時,那上面的可能就代碼量很大了,這里寫下GoogleAPI提供的方法
//數組存儲點擊次數 long[] mHits = new long[2]; @Override public void onClick(View v) { //實現雙擊方法 //src 拷貝的源數組 //srcPos 從源數組的那個位置開始拷貝. //dst 目標數組 //dstPos 從目標數組的那個位子開始寫數據 //length 拷貝的元素的個數 System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1); //實現左移,然后最后一個位置更新距離開機的時間,如果最后一個時間和最開始時間小于500,即雙擊 mHits[mHits.length - 1] = SystemClock.uptimeMillis(); if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) { // 雙擊居中了。。。屏幕的一半和歸屬地的一半,更新窗口,保存lastX params.x = wm.getDefaultDisplay().getWidth()/2-view.getWidth()/2; wm.updateViewLayout(view, params); Editor editor = sp.edit(); editor.putInt("lastx", params.x); editor.commit(); } }
本文由用戶 n6xb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!