Mam wymagania UX, że użytkownik uruchamia Dialog
przez długie naciśnięcie komórki w GridView
.Rejestracja UP/CANCEL z okna dialogowego, gdy zdarzenie DOWN zostało wywołane z View's LongPress
Choć
Dialog
wyświetlany jest użytkownik musi być w stanie przenieść ich palca/kciuka po ekranie bez wyzwalania zdarzenieUP/CANCEL
gdy opuszczają graniceGridView
komórce.Gdy użytkownik wreszcie przełamie kontakt z ekranem , to właśnie zamierzam przechwycić.
GridView
wydaje się rejestrować niektóre fałszywe alarmy dlaUP/CANCEL
, których nie widzimy przy użyciu innych widoków.Problem jest, że oryginalny widok przechwytuje wszystkich zdarzeń dotykowych, ponieważ
DOWN
został schwytany przez nią.Okno dialogowe rejestruje/widzi brak dotknięć, aż do zdarzenia UP z oryginalnego widoku.
Próbowałem anulowanie oryginalnego zdarzenia dotykowego i za pomocą dispatchTouch()
itp nr radości.
Wszelkie pomysły?
Czy mógłbyś być bardziej konkretny? nie rozumiem, co chcesz robić. – TheRedFox
Widok w działaniu lub fragmencie uruchamia wyświetlanie okna dialogowego, gdy widok jest długi (działa). Użytkownik musi być w stanie oderwać palec od widoku, które wywołało dialog, ale nigdy nie zerwać kontaktu z ekranem. Kiedy i tylko wtedy, gdy użytkownik zerwie kontakt z ekranu, uruchamia inne zdarzenie. Problem: po wyjściu poza granice oryginalnego widoku ACTION_UP i/lub ACTION_CANCEL są wyzwalane i żadne akcenty nie są rejestrowane przez okno dialogowe (ani nic innego), dopóki użytkownik nie zerwie kontaktu z ekranem i nie dokona retuszu. –
Zrobiłem coś podobnego bez widoku siatki. Użytkownik musi nacisnąć długo, pojawi się okno dialogowe, użytkownik może przesuwać palec (naciskając) wszędzie, a gdy użytkownik podniesie palcem okno dialogowe zostanie ukryte. Rozważ nagrywanie filmu i opublikuj go tutaj. Nie zrozumiałem tej części (i żadne dotknięcia nie są rejestrowane przez okno dialogowe (ani nic innego), dopóki użytkownik nie zerwie kontaktu z ekranem i retuszuje.) –