Как обнаружить событие двойного щелчка для кнопок в Android
Что у меня есть: у меня есть набор кнопок в горизонтальной прокрутки
Что я хочу: я хочу обнаружить событие при двойном нажатии на кнопку
Примечание. Обычно я работаю с событиями кликов, используя class implements Onclicklistener
, Но теперь, как я могу добиться того же для двойных кликов. будет полезно, если есть какой-либо интерфейс, который я могу использовать для этой цели
КОД:
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="200dp"
android:layout_height="150dp"
android:text="Song1" />
<Button
android:id="@+id/button2"
android:layout_width="200dp"
android:layout_height="150dp"
android:text="Song2" />
<Button
android:id="@+id/button3"
android:layout_width="200dp"
android:layout_height="150dp"
android:text="Song3" />
</LinearLayout>
</HorizontalScrollView>
4 ответа
Здесь отличный ответ:
Один щелчок и двойной щелчок кнопки в Android
Тем не менее, я предлагаю использовать событие OnLongPress, которое рекомендуется Google.
Посмотреть этот API здесь:
http://developer.android.com/reference/android/view/View.OnLongClickListener.html
ура
Вот что работает для меня,
Примечание: он будет работать только для двойного щелчка, он не может обрабатывать действия одного щелчка и двойного щелчка отдельно
// Define 2 global class variables
private static long LAST_CLICK_TIME = 0;
private final int mDoubleClickInterval = 400; // Milliseconds
// Then, inside onClick method of Button
long doubleClickCurrentTime = System.currentTimeMillis();
long currentClickTime = System.currentTimeMillis();
if (currentClickTime - LAST_CLICK_TIME <= mDoubleClickInterval)
{
Toast.makeText(this, "Double click detected", Toast.LENGTH_SHORT).show();
}
else
{
LAST_CLICK_TIME = System.currentTimeMillis();
// !Warning, Single click action problem
}
private int buttonClick = 0;
private void fabVisibility () {
fabOpen.setOnClickListener (v -> {
if (buttonClick == 0){
buttonClick = 2;
overridePendingTransition (R.anim.fade_in, R.anim.fade_out);
scanFab.setVisibility (View.VISIBLE);
historyFab.setVisibility (View.VISIBLE);
}else if (buttonClick == 2){
buttonClick = 0;
overridePendingTransition (R.anim.fade_in, R.anim.fade_out);
scanFab.setVisibility (View.GONE);
historyFab.setVisibility (View.GONE);
}
});
}
Я использую это соло:
var doubleTap = false
your_button.setOnClickListener {
if (doubleTap)
handleClick(it.context)
doubleTap = true
Handler(Looper.getMainLooper()).postDelayed({
doubleTap = false
}, 1500)
}
вы можете использовать этот трюк в onBackPress Activity для выхода из приложения на шаге буксировки.
Удачи