本文實(shí)例為大家分享了java用arraycopy實(shí)現(xiàn)多擊事件的3種方法,供大家參考,具體內(nèi)容如下
1、雙擊事件的實(shí)現(xiàn)
我們規(guī)定兩次點(diǎn)擊的事件間隔在500毫秒內(nèi)為雙擊事件,這一值可以隨意限定。
1
2
3
4
5
6
7
8
9
10
11
12
|
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(), "點(diǎn)擊了兩下" , 0 ).show(); } } startTime = System.currentTimeMillis(); } }); |
2、arraycopy用法
arraycopy是用于數(shù)組復(fù)制的一個(gè)函數(shù)
我們先來(lái)看一個(gè)arraycopy的小例子
1
2
3
4
5
6
7
8
9
10
11
|
//靜態(tài)初始化兩個(gè)長(zhǎng)度不同的數(shù)組 int src[] = { 1 , 2 , 3 , 4 , 5 , 6 }; int dest[] = { 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 }; //將數(shù)組src的4個(gè)元素copy到數(shù)組dest中 System.arraycopy(src, 1 ,dest, 2 , 4 ); //輸出數(shù)組dest for ( int i= 0 ;i< 10 ;i++) { System.out.println(dest[i]); } |
輸出結(jié)果
由結(jié)果我們可以看出arraycopy的用法
參數(shù):
1.原數(shù)組(要被拷貝的數(shù)組)
2.原數(shù)組的拷貝起始位置索引值
3.目標(biāo)數(shù)組(原數(shù)組的數(shù)據(jù)—拷貝–>目標(biāo)數(shù)組)
4.目標(biāo)數(shù)組接受值的起始索引位置
5.拷貝的長(zhǎng)度
-
3、多擊事件的實(shí)現(xiàn)
1
2
3
4
5
6
7
8
9
10
11
12
|
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 ){ //響應(yīng)了一個(gè)三擊事件 Toast.makeText(getApplicationContext(), "點(diǎn)擊了三下!!!!" , 0 ).show(); } } }); |
mHits 長(zhǎng)度為3的數(shù)組(即多擊次數(shù)),最后一位 mHits[mHits.length-1] 存儲(chǔ)每次點(diǎn)擊的時(shí)間
每點(diǎn)擊一次 arraycopy一次
當(dāng)點(diǎn)擊夠了3次 即mHits[0]有值后判斷 最后一次點(diǎn)擊和第一次點(diǎn)擊的時(shí)間間隔,小于我們限定的時(shí)間則判定為三擊。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。