一、老惯例 不多说 先上图
我们是想学习Android系统是怎么实现三击事件的
我们先找到源代码(系统上层所有应用的源代码.rar)
找到\packages\apps\Settings并导入到eclipse
使用Ctrl+H全局查找"Android 版本"这几个文本
会在values-zh-rCN/strings.xml中找到<string name="firmware_version" msgid="4801135784886859972">"Android 版本"</string>
再根据name="firmware_version" 查找到
res/xml/device_info_settings.xml
<!-- Device firmware version -->
<Preference android:key="firmware_version"
style="?android:preferenceInformationStyle"
android:title="@string/firmware_version"
android:summary="@string/device_info_default"/>
再根据android:key="firmware_version"
查找到DeviceInfoSettings.java
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getKey().equals("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) {
}
}
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
该方法里就是三击事件的实现原理 我们可以直接copy过来使用
long[] mHits = new long[3];
public void onPreferenceTreeClick() {
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
这里放置 三击事件要触发执行的代码
}
}