Touch-Ereignis für TYPE_SYSTEM_OVERLAY konnte nicht abgerufen werden

8

Ich möchte eine App entwickeln, die Swapps .i ähnlich ist Ich versuche, eine Schaltfläche oben auf jedem Bildschirm anzuzeigen, und das sollte nur bei einer Wischaktion auftreten. Ich habe mit dem folgenden Code versucht

%Vor%

Ich versuche, die Schaltfläche anzuzeigen, wenn der Benutzer von links nach rechts wischt, indem er dieses Ereignis erfasst und

ausführt %Vor%

und entfernen Sie die Ansicht, wenn der Benutzer von rechts nach links mit

wischt %Vor%

Wie erwähnt, konnte ich die Bewegungsereignisse nicht erhalten, es sei denn, ich änderte den Typ als TYPE_SYSTEM_ALERT, aber das friert den gesamten Bildschirm ein und konnte weder zurück noch zu Hause klicken, gibt es einen alternativen Weg dazu.

>

Ich habe gerade die untenstehende Modifikation versucht

%Vor%

Aber ich konnte nicht auf die darunterliegende Schaltfläche klicken, möglicherweise aufgrund von MATCH_PARTENT, aber wenn ich sie auf wrap_content einstelle, kann ich keine Klickereignisse erhalten.

    
ganesh 18.02.2013, 14:42
quelle

4 Antworten

8

Um die Ansicht auszublenden, müssen Sie mWindowManager.removeView (mOverlay) aufrufen;

%Vor%     
DjHacktorReborn 26.02.2013, 19:50
quelle
1

Der Blick aus dem Kodex ist immer hektisch und etwas schwierig zu handhaben. Alternativ können Sie die Schaltfläche im Layout hinzufügen und sie entsprechend Ihren Wischen sichtbar und unsichtbar machen.

und benutze den unteren Code, um die Gesten zu erhalten

%Vor%     
Dinesh Prajapati 28.02.2013 07:11
quelle
1

Ihre Herangehensweise an diese Aufgabe ist sehr ungewöhnlich. Das Hinzufügen einer neuen Ansicht würde die Aufgabe gut erledigen.

Fügen Sie diesen Code hinzu:

%Vor%

Um die Ansicht auszublenden, können Sie sie einfach aus dem Layout entfernen oder ihre Sichtbarkeit ändern.

Der Ansatz, an dem Sie gearbeitet haben, ist sehr schwierig, und andere hatten Probleme mit Berührungen. Beispiele hierfür sind Android: Multi-Touch und TYPE_SYSTEM_OVERLAY und GestureDetector innerhalb einer TYPE_SYSTEM_OVERLAY . Probieren Sie Diese Google-Suche für mehr.

    
Phil 26.02.2013 15:26
quelle
1

Verwenden Sie den Fenstertyp TYPE_PHONE anstelle von TYPE_SYSTEM_OVERLAY zusammen mit dem Flag FLAG_NOT_FOCUSABLE .

    
Devendra Singh Rathod 19.01.2017 12:57
quelle