Android连续点击多次事件的实现
有時(shí)候我們需要實(shí)現(xiàn)這樣的場景,類似進(jìn)入開發(fā)者模式,即多次點(diǎn)擊后執(zhí)行操作。
?
首先我們先看一個(gè)方法:
System提供的一個(gè)靜態(tài)方法arraycopy(),我們可以使用它來實(shí)現(xiàn)數(shù)組之間的復(fù)制。
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
src:源數(shù)組;?
srcPos:源數(shù)組要復(fù)制的起始位置;?
dest:目的數(shù)組;?
destPos:目的數(shù)組放置的起始位置;?
length:復(fù)制的長度。?
注意:src and dest都必須是同類型或者可以進(jìn)行轉(zhuǎn)換類型的數(shù)組.
首先我們定義次數(shù),規(guī)定的有效時(shí)間,還有對(duì)應(yīng)的數(shù)組,即我們要在一秒鐘內(nèi)點(diǎn)擊4次才有效
?
@Overridepublic void onClick(View v) {continuousClick(COUNTS, DURATION);}private void continuousClick(int count, long time) {//每次點(diǎn)擊時(shí),數(shù)組向前移動(dòng)一位System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);//為數(shù)組最后一位賦值mHits[mHits.length - 1] = SystemClock.uptimeMillis();if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {mHits = new long[COUNTS];//重新初始化數(shù)組Toast.makeText(this, "連續(xù)點(diǎn)擊了4次", Toast.LENGTH_LONG).show();}}
思路:首先我們點(diǎn)擊的時(shí)候都將數(shù)組向左移動(dòng)一位,將時(shí)間賦值給最后一位,從上面的代碼中我們可以看出當(dāng)我們點(diǎn)擊了四次,那么最后一位就已經(jīng)被移到了第一位,然后我們比較時(shí)間:
mHits[0] >= (SystemClock.uptimeMillis() - DURATION)
如果是在我們規(guī)定的時(shí)間內(nèi),那么就生效,執(zhí)行我們所要的操作。
?
SystemClock.uptimeMillis():手機(jī)開機(jī)到現(xiàn)在的時(shí)間。
注意:執(zhí)行操作后需要從新初始化數(shù)組:mHits = new long[COUNTS];否則點(diǎn)擊第六次第七次的時(shí)候也會(huì)觸發(fā)事件。
轉(zhuǎn)載于:https://www.cnblogs.com/tangZH/p/9832171.html
總結(jié)
以上是生活随笔為你收集整理的Android连续点击多次事件的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring4.0:@Configura
- 下一篇: Skype for Business S