本文實例為大家分享了java用arraycopy實現多擊事件的3種方法,供大家參考,具體內容如下
1、雙擊事件的實現
我們規定兩次點擊的事件間隔在500毫秒內為雙擊事件,這一值可以隨意限定。
bt_click.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(startTime!=0){ long endTime = System.currentTimeMillis(); if(endTime-startTime<500){ Toast.makeText(getApplicationContext(), "點擊了兩下", 0).show(); } } startTime = System.currentTimeMillis(); } });2、arraycopy用法
arraycopy是用於數組複製的一個函數
我們先來看一個arraycopy的小例子
//靜態初始化兩個長度不同的數組int src[] = {1,2,3,4,5,6}; int dest[] = {10,9,8,7,6,5,4,3,2,1}; //將數組src的4個元素copy到數組dest中System.arraycopy(src,1,dest,2,4); //輸出數組dest for(int i=0;i<10;i++) { System.out.println(dest[i]); }輸出結果
由結果我們可以看出arraycopy的用法
參數:
1.原數組(要被拷貝的數組)
2.原數組的拷貝起始位置索引值
3.目標數組(原數組的數據―拷貝>目標數組)
4.目標數組接受值的起始索引位置
5.拷貝的長度
-
3、多擊事件的實現
private long[] mHits = new long[3]; bt_many_click.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.arraycopy(mHits, 1, mHits, 0, mHits.length-1); mHits[mHits.length-1] = SystemClock.uptimeMillis(); if(mHits[mHits.length-1]-mHits[0]<500){ //響應了一個三擊事件Toast.makeText(getApplicationContext(), "點擊了三下!!!!", 0).show(); } } });mHits 長度為3的數組(即多擊次數),最後一位mHits[mHits.length-1] 存儲每次點擊的時間
每點擊一次arraycopy一次
當點擊夠了3次即mHits[0]有值後判斷最後一次點擊和第一次點擊的時間間隔,小於我們限定的時間則判定為三擊。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。