如何创建双击,三次和四次点击



我想知道如果点击是两倍,三倍或四倍。这是我的尝试:

// Global variables
private int numberOfTaps;
private long timeMillisOfFirstClick;
private int typeOfClick;
private int interval;
// Inside the 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));
}

上面的代码有时工作得很好,有时工作得不好。我错过什么了吗?

现在可以运行了:

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));

最新更新