03多次点击事件的实现

多次点击

一、彩蛋
1、快速点击3次

2、再次点击一下

二、查看系统如何实现多次点击
导入Settings


1、Android version


2、CTRL+H,搜Android version

3、搜索到的strings.xml

4、再次CTRL+H,搜fireware_version

5、源码多次点击实现
long[] mHits = new long[3]; 
...... 
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) {
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("android",
com.android.internal.app.PlatLogoActivity.class.getName());
try {
startActivity(intent);
catch (Exception e) {
Log.e(LOG_TAG"Unable to start activity " + intent.toString());
}
}
三、系统3击事件源码分析:


四、案例
package cn.zengfansheng.threeclick;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 1、存时间的数组
long[] mHits = new long[3];
public void threeClick(View view) {
// 2、数组拷贝,将mHits的值位置1开始拷贝的mHits从0开始,拷贝mHits.length-1个
// 那么最后一个位置留下了
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
// 3、mHits最后一个位置赋值为当前系统时间
mHits[mHits.length - 1] = SystemClock.uptimeMillis();
//4、如果mHits第一个元素
if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {
Toast.makeText(getApplicationContext(), mHits.length + "击事件~~~",0).show();
}
}
/**
* 我的四击事件
* @param view
*/
long[] myHits = new long[4];
public void myFourClick(View view) {
// 1、拷贝
System.arraycopy(myHits, 1, mHits, 0, myHits.length - 1);
// 2、赋值系统时间给最后一个元素
myHits[myHits.length - 1] = SystemClock.currentThreadTimeMillis();
// 判断
if (myHits[0] >= (myHits[myHits.length - 1] - 600)) {
Toast.makeText(getApplicationContext(), myHits.length + "击事件~~~", 0)
.show();
}
}
}





posted @ 2015-10-04 22:00  风起来时  阅读(356)  评论(0编辑  收藏  举报