Ich habe eine App, wo ich verschiedene Player zum Abspielen verschiedener Arten von Streams, z. Ich verwende MediaPlayer
und YoutubePlayerSupportFragment
über die YouTube-Player-API. Daher habe ich einen separaten Controller für Play/Pause/etc erstellt, auch ein Benutzer kann auf eine Float-Schaltfläche klicken (wodurch der Player verkleinert und gezogen wird). Dazu benutze ich einen Dialog (YouTube-Player-API erlaubt keine Ansichten auf dem Player).Android - Ereignisse Übergabe von Dialog zu MainActivity
Also das Problem, das ich gegenüberstelle, ist dies: während die Dialog
ist aktiv (zeigt) keine Touch-Ereignisse durch die MainActivity
gehen. Ich habe dieses Problem überwunden, indem ich MotionEvent
s über dispatchTouchEvent()
von besagtem Activity
von Dialog
dispatchTouchEvent()
sendete. Es funktioniert gut, wie ich es will, und ich kann jetzt zwischen verschiedenen Bereichen der App wechseln, aber ich kann keine Klicken Sie auf Ereignisse auf ListView
und GridView
nur alles andere funktioniert gut.
Ich überprüfte die ListView
's dispatchTouchEvent()
und ich bekomme alle MotionEvent
s.
Hier ist der Code, den ich verwende, um Ereignisse an die MainActivity
zu senden.
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (isPlayerMinimized) {
if (playerDraggableView != null) {
playerDraggableView.dispatchTouchEvent(event);
}
return ((MainActivity) mContext).dispatchTouchEvent(event);
}
else if (!onControlViews(event)) {
detector.onTouchEvent(event);
}
return super.dispatchTouchEvent(event);
}
kann ich die ListView
blättern und GridView
aber nicht OnItemClickListener
oder OnItemLongClickListener
Events abzufeuern.
Meine Frage ist, ist dies das richtige/beabsichtigte Verhalten? Wenn ja, gibt es eine Möglichkeit, MotionEvent
s an die MainActivity
zu senden. Oder fehlt mir etwas? Wenn das der Fall ist, dann weisen Sie bitte darauf hin.
Ich weiß, dass es hier nicht genug Code gibt, um eine Lösung zu liefern, aber wenn ich hier etwas offensichtliches verpasse, dann sag es bitte. Vielen Dank!
Vielen Dank für die Antwort, aber wie ich schon sagte YouTube Player erlaubt keine Ansichten auf sich selbst zu sein. Außer natürlich 'Dialog's und' DialogFragment's. Der Player wird mit einem Overlay-Fehler beendet. Siehe [link] (https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayer.ErrorReason). – Abbas
Ich sehe, ich habe das vorher nicht gesehen. Haben Sie versucht, ein 'YouTubePlayerView' direkt in Ihr Layout-XML einzufügen? Ich kann Overlays hinzufügen, obwohl ich 'YouTubePlayerSupportFragment' nicht verwende, meine' Activity' erweitert 'YouTubeBaseActivity' anstelle von –
Ich habe' YouTubePlayerView' nicht verwendet und möchte es lieber nicht. 'YoutubePlayerSupportFragment' ist ein Fragment, das die Flexibilität bietet, einfach zwischen verschiedenen Spielern zu wechseln und einen ziemlich nützlichen Backstack zu bieten. Ich würde also lieber 'YouTubePlayerSupportFragment' verwenden, aber wenn es keinen anderen Ausweg aus dieser Unordnung gibt, könnte ich mir überlegen, einen' YoutubePlayerView' in ein Fragment einzufügen und zu sehen, ob das funktioniert. Aber jetzt habe ich 4 verschiedene Spieler in meiner App und ich kann nicht einfach das gesamte Design ändern. – Abbas