Android-overlay-layout über alle Fenster, die Sie empfängt, berührt
Habe ich eine Anzeige auf der Oberseite der alle Anwendungen und windows mit dem folgenden code:
//These three are our main components.
WindowManager wm;
LinearLayout ll;
WindowManager.LayoutParams ll_lp;
//Just a sample layout parameters.
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
ll_lp = new WindowManager.LayoutParams();
ll_lp.format = PixelFormat.TRANSLUCENT;
ll_lp.height = WindowManager.LayoutParams.FILL_PARENT;
ll_lp.width = WindowManager.LayoutParams.FILL_PARENT;
ll_lp.gravity = Gravity.CLIP_HORIZONTAL | Gravity.TOP;
//This one is necessary.
ll_lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
//Play around with these two.
ll_lp.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
ll_lp.flags = ll_lp.flags | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
//This is our main layout.
ll = new LinearLayout(this);
ll.setBackgroundColor(android.graphics.Color.argb(50, 255, 255, 255));
ll.setHapticFeedbackEnabled(true);
ll.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(getApplicationContext(), "TOUCHED", Toast.LENGTH_SHORT).show();
return false;
}
});
//And finally we add what we created to the screen.
wm.addView(ll, ll_lp);
Weil FLAG_NOT_TOUCHABLE eingestellt ist, es zeigt nur den Blick, sondern erhält keine touch-Ereignisse. Die Anwendung hinter der view erhält alle touch-Ereignisse.
Allerdings, wenn ich nicht das Kennzeichen gesetzt, dann werden nur die anzeigen erhält, berührt, dass die Anwendung dahinter nicht erhalten.
Gibt es eine Möglichkeit für beide die Aussicht und die Anwendung dahinter zu erhalten, berührt? Ich habe versucht, false zurückgeben, aber immer noch das gleiche.
Jede Hilfe wäre sehr geschätzt werden!
- hast du es funktioniert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn im nicht zu verkennen, die anzeigen, das im hintergrund ist nicht zu erhalten, touch-Ereignisse, weil seine gefiltert durch das system zu verhindern "click-jacking" - exploits.
Könnten Sie in der Lage sein, um dieses feature system durch ausschalten der Filterung des touch-Ereignisse für den Blick in den hintergrund mit der Blick.setFilterTouchesWhenObscured(Boolean) Methode.