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?
InformationsquelleAutor kevdliu | 2012-09-13
Schreibe einen Kommentar