連續點擊安卓11,android多擊事件_Android中的多擊事件

 2023-10-21 阅读 22 评论 0

摘要:在android系統中。google提供了一個click事件。只負責相應單次點擊。如果想實現雙機或者多擊事件的話就需要借鑒下google原生應用的源碼了。連續點擊安卓11。在android中,三次點擊android的版本圖標會出現一個相應版本的logo。來看看google工程師是怎么寫的。@Over

在android系統中。google提供了一個click事件。只負責相應單次點擊。

如果想實現雙機或者多擊事件的話就需要借鑒下google原生應用的源碼了。

連續點擊安卓11。在android中,三次點擊android的版本圖標會出現一個相應版本的logo。

來看看google工程師是怎么寫的。

@Override

js雙擊事件條件觸發?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());

}

}

} else if (preference.getKey().equals(KEY_BUILD_NUMBER)) {

// Don't enable developer options for secondary users.

if (UserHandle.myUserId() != UserHandle.USER_OWNER) return true;

if (mDevHitCountdown > 0) {

if (mDevHitCountdown == 1) {

if (super.ensurePinRestrictedPreference(preference)) {

return true;

}

}

mDevHitCountdown--;

if (mDevHitCountdown == 0) {

getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,

Context.MODE_PRIVATE).edit().putBoolean(

DevelopmentSettings.PREF_SHOW, true).apply();

if (mDevHitToast != null) {

mDevHitToast.cancel();

}

mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_on,

Toast.LENGTH_LONG);

mDevHitToast.show();

} else if (mDevHitCountdown > 0

&& mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER-2)) {

if (mDevHitToast != null) {

mDevHitToast.cancel();

}

mDevHitToast = Toast.makeText(getActivity(), getResources().getQuantityString(

R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),

Toast.LENGTH_SHORT);

mDevHitToast.show();

}

} else if (mDevHitCountdown < 0) {

if (mDevHitToast != null) {

mDevHitToast.cancel();

}

mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_already,

Toast.LENGTH_LONG);

mDevHitToast.show();

}

}

return super.onPreferenceTreeClick(preferenceScreen, preference);

}

設置設置應用中實現三擊的源碼。簡單的提取一下,可以得到n擊事件的源碼

private void doubleClick() {

final long[] mHits = new long[2];

view.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);

mHits[mHits.length - 1] = SystemClock.uptimeMillis();

if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {

// 雙擊事件

}

}

});

}

原理分析:

將每次的點擊事件依次存放到一個定長的容器中。再對比第一次跟最后一次之間的時間差,如果滿足一定的條件的。就認為是多擊事件。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/156524.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息