Słucham długich kliknięć widoku w View za pomocą setOnLongClickListener(). Czy mogę zmienić opóźnienie/czas trwania długiego kliknięcia?Zmień opóźnienie długiego kliknięcia
Odpowiedz
AFAIK, nie. Jest podłączony przewodowo w ramach przez getLongPressTimeout()
na ViewConfiguration
.
Zapraszamy do obsługi własnych wydarzeń dotykowych i zdefiniowania własnej koncepcji "długiego kliknięcia". Po prostu upewnij się, że nie różni się on znacząco od tego, czego oczekuje użytkownik, i najprawdopodobniej użytkownik będzie oczekiwał tego, co używają wszystkie inne aplikacje, co jest standardowym czasem trwania 500 ms.
To było najprostsze rozwiązanie roboczego znalazłem do tego ograniczenia:
//Define these variables at the beginning of your Activity or Fragment:
private long then;
private int longClickDuration = 5000; //for long click to trigger after 5 seconds
...
//This can be a Button, TextView, LinearLayout, etc. if desired
ImageView imageView = (ImageView) findViewById(R.id.desired_longclick_view);
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
then = (long) System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if ((System.currentTimeMillis() - then) > longClickDuration) {
/* Implement long click behavior here */
System.out.println("Long Click has happened!");
return false;
} else {
/* Implement short click behavior here or do nothing */
System.out.println("Short Click has happened...");
return false;
}
}
return true;
}
});
To jest mój sposób na zadany czas na długi prasy
private int longClickDuration = 3000;
private boolean isLongPress = false;
numEquipeCheat.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isLongPress = true;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (isLongPress) {
Vibrator vibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(100);
// set your code here
// Don't forgot to add <uses-permission android:name="android.permission.VIBRATE" /> to vibrate.
}
}
}, longClickDuration);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
isLongPress = false;
}
return true;
}
});
To właśnie używam. Jest podobny do odpowiedzi Cumulo Nimbus, z dwiema znaczącymi różnicami.
- Użyj już zapisanych wartości zdarzeń dla czasu przestoju i bieżącego czasu. Oprócz powielania wysiłków, ma to dobry wpływ na to, aby słuchacz był użyteczny dla wielu widoków jednocześnie, bez śledzenia czasów rozpoczęcia dla każdego pojedynczego zdarzenia.
- Sprawdź, czy użytkownik
view.isPressed
nie odsunął się od widoku podczas zdarzenia dotyku. To naśladuje domyślne zachowanie systemu dlaonClick
ionLongClick
.
long longPressTimeout = 2000;
@Override
public boolean onTouch(View view, MotionEvent event) {
if (view.isPressed() && event.getAction() == MotionEvent.ACTION_UP) {
long eventDuration = event.getEventTime() - event.getDownTime();
if (eventDuration > longPressTimeout) {
onLongClick(view);
} else {
onClick(view);
}
}
return false;
}
Jeśli widok nie jest normalnie klikalne będzie trzeba zadzwonić view.setClickable(true)
do kontroli view.isPressed()
do pracy.
- 1. Podczas długiego kliknięcia usuń element
- 2. Ustawianie detektora długiego kliknięcia w GridView
- 3. jak zaimplementować odbiornik długiego kliknięcia w widoku listy
- 4. Opóźnienie ekranu internetowego aplikacji iPhone opóźnienie:
- 5. Opóźnienie RaiseCanExecuteChanged z ContextMenu
- 6. Renderowanie długiego dokumentu na iPadzie
- 7. Java od długiego do binarnego
- 8. Podział strony dla długiego stołu
- 9. Porównanie długiego std_logic_vector do zera
- 10. Definiowanie długiego łańcucha w Razor
- 11. Android: symulacja długiego czasu pracy
- 12. Zmień styl czcionki
- 13. EC2 - Micro Instance - Bardzo powolna odpowiedź sieci/opóźnienie/opóźnienie
- 14. Opóźnienie Ładowanie bibliotek DLL
- 15. Opóźnienie ładowania elementu iframe?
- 16. Opóźnienie z brakującymi danymi
- 17. Opóźnienie Zawiesina skryptu JavaScript
- 18. Opóźnienie JQuery przed fadeOut
- 19. Opóźnienie działania w Androidzie
- 20. Tomcat sporadyczne opóźnienie
- 21. opóźnienie w data.table R
- 22. nagłówek opóźnienie lokalizacja
- 23. Umieścić opóźnienie w JavaScript
- 24. Opóźnienie ładowania wC#?
- 25. Opóźnienie programu Raspberry Pi
- 26. Opóźnienie CAKeyframeAnimation przed powtórzeniem
- 27. Losowe opóźnienie czasowe
- 28. Opóźnienie zrzut ekranu iOS
- 29. Opóźnienie przesyłania Firebase Analytics
- 30. opóźnienie animacji nie działa
Jak zdefiniowałbyś swoją własną koncepcję długiego kliknięcia? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Dzięki, domyślam się, że na razie pozostanę domyślny. – fhucho
@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz prawdopodobnie przez przesłonięcie widoku. Fajna nazwa użytkownika BTW ;-) – fhucho