Ne pouvait pas obtenir d'événement Tactile pour TYPE_SYSTEM_OVERLAY

Je voudrais développer une application qui est similaire à Swapps .j'essaie d'afficher un bouton situé sur le haut de l'écran et qui doit se produire uniquement sur un balayage de l'action.J'ai essayé avec le code ci-dessous

    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    params.type =WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
    params.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
    params.format =PixelFormat.TRANSLUCENT; 
    params.height = WindowManager.LayoutParams.WRAP_CONTENT;
    params.width = WindowManager.LayoutParams.WRAP_CONTENT;
    parentlay = new LinearLayout(this);
    mybt = new Button(getApplicationContext());
    bt.setText("Click to Go");

    parentlay.setBackgroundColor(Color.TRANSPARENT);
    parentlay.setHapticFeedbackEnabled(true);
    parentlay.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                //event.getAction() prints 4 and not able to get up or down event
           }
       });
   windowmanager.addView(parentlay, params);

J'essaie d'afficher le bouton lorsque l'utilisateur effectue de gauche à droite par la capture de l'événement et de faire

    parentlay.addView(bt);

et supprimer l'affichage lorsque l'utilisateur effectue de droite à gauche par

    parentlay.removeView(bt);

Comme je le disais, je coudn't obtenir les événements de mouvement, à moins que j'ai changé le type de TYPE_SYSTEM_ALERT ,mais qui inturn fige à l'écran et ne pouvait pas cliquez sur retour ou le bouton d'accueil,il n'y a aucune autre façon de le faire.

J'ai juste essayé en dessous de modification

    params.type =WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
    params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    |WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
   |WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

    params.height = WindowManager.LayoutParams.MATCH_PARENT;
    params.width = WindowManager.LayoutParams.MATCH_PARENT;

Mais je ne pouvais pas cliquer sur le bouton en dessous ,peut-être sa raison d'MATCH_PARTENT mais si je l'ai mis à wrap_content alors je ne peux pas obtenir cliquez sur événements.

OriginalL'auteur ganesh | 2013-02-18