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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!