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