Experimente, bei denen Affen und Ratten wiederholt Knöpfe drücken und verrückt sterben, sind berühmt, aber auch Menschen drücken wiederholt Knöpfe. Aus diesem Grund wiederholte der Knopf den Mechanismus zur Verhinderung von Treffern unter Android. Die Methode selbst kommt eher heraus, aber ich kann die Methode, an die ich gedacht habe, nicht finden, also werde ich sie schreiben.
GuardActivity.java
public class GuardActivity extends AppCompatActivity {
//Das letzte Mal, als die Taste gedrückt wurde
private long mLastClickedTime;
//Wiederholte Trefferverhütungszeit.Millisekunde
private static long GUARD_TIME = 200;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButtonListener listener = new ButtonListener();
//ID-Liste der Schaltfläche zum Einstellen des Listeners
int[] BUTTON_LIST = {R.id.ButtonEnter, R.id.ButtonExit, R.id.ButtonNext, R.id.ButtonPrev};
for (int buttonId : BUTTON_LIST) {
findViewById(buttonId).setOnClickListener(listener);
}
}
//Klicken Sie auf Listener
private class ButtonListener implements View.OnClickListener {
@Override
public void onClick(View v) {
long currentTime = System.currentTimeMillis();
if (currentTime - mLastClickedTime < GUARD_TIME) {
//Aktuelle Uhrzeit-Letzte getippte Zeit<Wiederholte Trefferverhütungszeit
//Tun Sie nichts im Fall von
return;
}
//Aktualisieren Sie die zuletzt getippte Zeit
mLastClickedTime = currentTime;
switch (v.getId()) {
case R.id.ButtonEnter:
//Verarbeitung für jede Schaltfläche
break;
}
}
}
}
Passen Sie die Anzahl der Sekunden wiederholter Trefferverhinderungszeit entsprechend an. Ich habe die Operation nicht fest bestätigt [^ 1].
Der Grund, warum ich dies brauchte, ist, dass das von PreferenceFragmentCompat erstellte Menü wiederholt aufgerufen wurde. Es scheint, dass Sie PreferenceFragment verwenden ** Wenn Sie mit der Android-Standardeinstellungsanwendung wiederholt auf das Menü klicken, wird derselbe Bildschirm zweimal geöffnet **. Wenn Sie also interessiert sind und Freizeit haben, versuchen Sie es wiederholt. Selbst wenn Sie in kurzer Zeit verschiedene Tasten separat drücken, wird der Bildschirm zweimal geöffnet [^ 2]. Ich bin sicher, ich habe es mit Oreo von Nexus 5X bestätigt. Je nach Modell ist dies möglicherweise nicht möglich. Ich möchte nicht erneut implementieren, was bereits im Framework enthalten ist, aber im Fall eines chaotischen Chans wie PreferenceFragmentCompat ist es einfacher und glücklicher, dies mit dem bekannten RecyclerView oder ListView so zu machen.
[^ 1]: Weil meine Finger müde sind. [^ 2]: Drücken Sie → loslassen → drücken → loslassen mit hoher Geschwindigkeit. Übung erforderlich.