Ich habe ein FrameLayout, das zuerst ein SurfaceView enthält, und ein RelativeLayout, das wiederum verschiedene Buttons und TextViews enthält.Android: SurfaceView und Z-Level Frage
Auf dem Canvas der SurfaceView zeichne ich zahlreiche Bitmaps, und über Touch und Motion Events kann der Benutzer sie ziehen.
Diese Bitmaps übergeben unter die Buttons etc, die in der RelativeLayout sind.
Nun, es ist mein (möglicherweise falsch) ist das Verständnis, dass die „Z-Ebene“ des Surface, oder was auch immer es, dass für sie hat passiert, ist völlig unabhängig von der tatsächlichen Z-Ebene des Rests des Layouts . Ist das der Fall? Wenn ja, wie kann ich es umgehen, so dass gezogene Bitmaps auf andere Ansichten gezogen werden? Oder wie sonst kann ich eine Leinwand im Vollbildmodus implementieren, ohne dass meine Schaltflächen usw. wie die Steuerelemente eines Overlays wirken?
Ich denke, was ich eigentlich brauche, ist eine Unterlage, wo Berührungsereignisse immer noch von den Tasten usw. darunter aufgenommen werden können. Aber ich weiß nicht, wie ich das erreichen soll, denn wenn ich meine Leinwand neu zeichne, muss ich auch den Hintergrund neu zeichnen.
Kann ich die Reihenfolge von RelativeLayout und SurfaceView innerhalb von FrameLayout vertauschen und den Hintergrund von Canvas transparent machen? Wenn das so ist, wie? Berühren Ereignisse immer noch "fallen" auf die Tasten darunter?
Danke, dass du mich begleitet hast. Ich weiß, dass ich ein bisschen waffler bin.
Hallo, danke für die Antwort. Wenn ein Bitmap gezogen wird, hinterlässt es während des MotionEvent eine Spur von neu gezeichneten Kopien von sich selbst, es sei denn, der Canvas-Hintergrund wird auf COLOR.Black gesetzt, bevor der aktuelle Speicherort des Bitmap gezeichnet wird. Also, ja, es gibt einen Hintergrund für das SurfaceView/Canvas. – JimBadger