Zeichnen Sie über die navigation-bar (und andere apps) auf Android-version >= 5

Ich möchte zu ziehen (Mauszeiger) - Symbol auf dem Bildschirm über anderen Anwendungen, die von einem Dienst. Ich habe implementiert die Funktionalität und ich kann ziehen über den Bildschirm, abgesehen von der Navigationsleiste. Ich habe recherchiert mehrere andere Fragen hier und versucht TYPE_SYSTEM_OVERLAY, TYPE_TOAST, TYPE_SYSTEM_ERROR und einige andere Fenster-Typen ohne Erfolg.

Ich versuche nicht zu erfassen, focus, Zeichnung nur ein Mauszeiger auf dem Bildschirm für eine Sekunde oder zwei. Wenn ich versuche zu zeichnen, über die Navigationsleiste, es geht einfach unter (eigentlich ist das RelativeLayout endet an der Grenze mit der Navigationsleiste - selbst wenn ich angeben manuelle dimension der Höhe). Die Abbildung unten zeigt die hand-Zeiger in der unteren rechten Teil des Bildschirms. Das ist so niedrig, wie ich kann, positionieren Sie es. Beachten Sie, dass ich versuche nicht zu verstecken, die Navigationsleiste in meiner Anwendung versuche zu zeichnen über andere apps.

Zeichnen Sie über die navigation-bar (und andere apps) auf Android-version >= 5

Ich habe sogar versucht die Einstellung der xpos und ypos offset-Einstellungen in WindowManager.LayoutParams Instanz, aber das gleicht das layout und geht immer noch unterhalb der Navigationsleiste).

Den layout-Parametern, die ich verwende, um zu zeigen, in diesem Fenster:

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSPARENT);

Bin ich dann hinzufügen die RelativeLayout mit diesen Parametern auf der WindowManager: windowManager.addView(relativeLayout, params);

  • Haben Sie deklarieren die Erlaubnis draw over other apps auf Ihre manifest-Datei?
  • ja, natürlich. Sonst wäre ich nicht in der Lage zu ziehen alle. Ich kann ziehen fein, über der Statusleiste, nur nicht über die Navigations-Leiste (unten, wo die zurück, home und den letzten softkeys sind)
InformationsquelleAutor miha | 2015-07-20
Schreibe einen Kommentar