首页 > 解决方案 > 如何创建双击、三击和四击

问题描述

我试图找出点击是双倍、三倍还是四倍,这是我的尝试:

代码

//Global Variables
private int numberOfTaps;
private long timeMillisOfFirstClick;
private int typeOfClick;
private int interval;

//Inside On Click Listener
typeOfClick = (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_double_click ? 2 : (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_triple_click ? 3 : 4;
interval = (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_double_click ? 750 : (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_triple_click ? 1000 : 1250;
if (numberOfTaps >= typeOfClick)
    numberOfTaps = 1;
else
    numberOfTaps++;
if (numberOfTaps == 1)
    timeMillisOfFirstClick = System.currentTimeMillis();
if (numberOfTaps == typeOfClick && (System.currentTimeMillis() - timeMillisOfFirstClick) <= interval) {
    Log.w("ABC", String.valueOf(typeOfClick));
}

上面的代码有时运行良好,有时运行不佳,我错过了什么吗?

标签: android

解决方案


Alhamdulillah,它现在正在工作

typeOfClick = (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_double_click ? 2 : (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_triple_click ? 3 : 4;
interval = (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_double_click ? 750 : (int) SavedData.getValue(requireActivity(), "chipSelected") == R.id.chip_triple_click ? 1000 : 1250;
if (timeMillisOfFirstClick > 0 && (System.currentTimeMillis() - timeMillisOfFirstClick) > interval)
    numberOfTaps = 1;
else
    numberOfTaps++;
if (numberOfTaps == 1)
    timeMillisOfFirstClick = System.currentTimeMillis();
if (numberOfTaps == typeOfClick && (System.currentTimeMillis() - timeMillisOfFirstClick) <= interval)
    Log.w("ABC", String.valueOf(typeOfClick));

推荐阅读