Zeichnen Sie die Navigationsleiste (und andere Apps) auf Android Version = 5

9

Ich möchte ein Symbol (Mauszeiger) auf dem Bildschirm über die anderen Anwendungen eines Dienstes zeichnen. Ich habe die Funktionalität implementiert und kann über den Bildschirm, abgesehen von der Navigationsleiste, zeichnen. Ich habe mehrere andere Fragen hier und versuchte TYPE_SYSTEM_OVERLAY , TYPE_TOAST , TYPE_SYSTEM_ERROR und einige andere Fenstertypen ohne Erfolg.

Ich versuche nicht, den Fokus zu erfassen, sondern ziehe nur einen Mauszeiger für ein oder zwei Sekunden auf den Bildschirm. Wenn ich versuche, über die Navigationsleiste zu zeichnen, wird sie einfach unterfahren (das RelativeLayout endet tatsächlich an der Grenze mit der Navigationsleiste - selbst wenn ich die manuelle Bemaßung für die Höhe vorschlage). Der folgende Screenshot zeigt den Zeiger rechts unten auf dem Bildschirm. Das ist so niedrig, wie ich es positionieren kann. Beachten Sie, dass ich nicht versuche, die Navigationsleiste in meiner Anwendung auszublenden - versuche, über andere Apps zu zeichnen.

Ich habe sogar versucht, die Einstellungen für xpos und ypos offset in WindowManager.LayoutParams instance zu setzen, aber das gleicht das Layout nur aus und geht trotzdem unter die Navigationsleiste).

Die Layout-Parameter, die ich verwende, um dieses Fenster anzuzeigen:

%Vor%

Ich füge dann die RelativeLayout mit diesen Parametern zum WindowManager hinzu: windowManager.addView(relativeLayout, params);

    
miha 20.07.2015, 12:06
quelle

2 Antworten

7

Nach einigem Herumspielen habe ich es geschafft, die richtigen Flaggen zu bekommen, damit es funktioniert. Es funktioniert fast (für die meisten Apps). Der zu erreichende Code folgt (ein Beispiel für den Klick-Klick-Handler):

%Vor%

Hier ist ein Screenshot dieses Codes in einer App (Sie können das Hand-Overlay sehen; dies ist auf Nexus 5 mit Android 6.0.1:

    
miha 03.09.2015, 13:18
quelle
2

Die Navigationsleiste am unteren Rand ist etwas, das nicht überfahren werden kann, da die oben dargestellten Elemente den Zugriff auf die Home-Schaltfläche, die Zurück-Schaltfläche usw. behindern könnten. Sie können Ihre Aktivität jedoch im Vollbildmodus anzeigen Navigationstasten, bis Sie von unten nach oben wischen, damit Sie überall auf dem Bildschirm zeichnen können.

EDIT: Ich habe einige ähnliche Fragen gefunden und diese hat eine Antwort: Zeichnen Sie Bitmaps über die Navigationsleiste in Android Die Antwort war, einen Y-Offset hinzuzufügen, der die Größe der Navigationsleiste hat.

    
LonelyIdiot 29.08.2015 05:20
quelle