Les expériences dans lesquelles des singes et des rats frappent à plusieurs reprises sur des boutons et meurent fous sont célèbres, mais les humains ont également appuyé sur des boutons à plusieurs reprises. C'est pourquoi le bouton mécanisme de prévention des coups répétés sur Android. La méthode elle-même sort relativement, mais je n'ai pas trouvé la méthode à laquelle j'ai pensé, alors je vais l'écrire.
GuardActivity.java
public class GuardActivity extends AppCompatActivity {
//La dernière fois que le bouton a été appuyé
private long mLastClickedTime;
//Temps de prévention des coups répétés.milliseconde
private static long GUARD_TIME = 200;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButtonListener listener = new ButtonListener();
//Liste d'ID du bouton pour définir l'auditeur
int[] BUTTON_LIST = {R.id.ButtonEnter, R.id.ButtonExit, R.id.ButtonNext, R.id.ButtonPrev};
for (int buttonId : BUTTON_LIST) {
findViewById(buttonId).setOnClickListener(listener);
}
}
//Cliquez sur l'écouteur
private class ButtonListener implements View.OnClickListener {
@Override
public void onClick(View v) {
long currentTime = System.currentTimeMillis();
if (currentTime - mLastClickedTime < GUARD_TIME) {
//Heure actuelle-Heure du dernier tapé<Temps de prévention des coups répétés
//Ne rien faire en cas de
return;
}
//Mettre à jour la dernière fois tapée
mLastClickedTime = currentTime;
switch (v.getId()) {
case R.id.ButtonEnter:
//Traitement pour chaque bouton
break;
}
}
}
}
Ajustez le nombre de secondes de temps de prévention des coups répétés selon vos besoins. Je n'ai pas confirmé l'opération fermement [^ 1].
La raison pour laquelle j'en avais besoin est que le menu créé par PreferenceFragmentCompat a été frappé à plusieurs reprises. Il semble que vous utilisez PreferenceFragment ** Si vous appuyez à plusieurs reprises sur le menu avec l'application de réglage standard Android, le même écran s'ouvrira deux fois **, donc si vous êtes intéressé et avez du temps libre, essayez de le frapper à plusieurs reprises. Même si vous appuyez sur différents boutons séparément dans un court laps de temps, l'écran s'ouvrira deux fois [^ 2]. Je suis sûr que je l'ai confirmé avec Oreo de Nexus 5X. Cela peut ne pas être possible selon le modèle. Je ne veux pas réimplémenter ce qui est déjà dans le cadre, mais dans le cas d'un chan désordonné comme PreferenceFragmentCompat, il est plus facile et plus heureux de le faire comme ça avec le RecyclerView ou ListView familier.
[^ 1]: Parce que mes doigts sont fatigués. [^ 2]: Appuyez → relâchez → appuyez → relâchez à grande vitesse. Pratique requise.