Android監聽連續點擊次數代碼實現

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