1. 程式人生 > >跟谷歌學一個多次點選事件的邏輯處理

跟谷歌學一個多次點選事件的邏輯處理

Android每一個版本,谷歌都會給他弄一個彩蛋。怎麼弄呢?只要我們在設定裡面狂點Androdi版本就行了。

       

然後檢視原始碼:


其實這個功能的邏輯主要就是幾行程式碼,下面是根據上面寫的一個四擊事件:

	long[] mHits = new long[4];// 陣列長度表示要點選的次數

	public void onClick(View view) {
		System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
		mHits[mHits.length - 1] = SystemClock.uptimeMillis();// 開機後開始計算的時間
		if (mHits[0] >= (SystemClock.uptimeMillis() - 600)) {
			Toast.makeText(this, "點選成功", Toast.LENGTH_SHORT).show();
		}
	}
    只要這連續四次點選的所用時間不超過600毫秒,就會彈出一個toast。

這個東東主要用到是一個system下面一個拷貝陣列的函式。查了查這個函式是幹嘛子的,找到了一個很直觀的解釋。

arraycopy(被複制的陣列, 從第幾個元素開始複製, 要複製到的陣列, 從第幾個元素開始貼上, 一共需要複製的元素個數);
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 

    我的理解應該是根據陣列的長度,現在是4,然後每次點選都把當前點選的時間存到數組裡面,每點一次把之前的點選時間往前推,當點到第4次的時候,就會算一下最後一次點選(第4次)跟第一次點選時間之差是否小於或等於600毫秒。

   谷歌的大牛果然厲害,幾行程式碼就可以n次點選事件都做出來了666666,只要把陣列長度改了就行了。