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
Vous devez vous connecter pour publier un commentaire.
Pour les cacher de la vue, vous devez appeler mWindowManager.removeView(mOverlay);
ok pour l'instant je peux accepter DjHacktor réponse donc, son tout à fait près à mes besoins
Merci, merci beaucoup!
OriginalL'auteur DjHacktorReborn
Utilisation de type de fenêtre
TYPE_PHONE
en place deTYPE_SYSTEM_OVERLAY
, avec drapeauFLAG_NOT_FOCUSABLE
.OriginalL'auteur Devendra Singh Rathod
De prise de vue à partir du Code est toujours agité et un peu difficiles à gérer. donc sinon u peut ajouter le bouton dans la Mise en page et la rendre visible et de l'invisible selon votre frottis.
et l'utilisation de code ci-dessous pour obtenir les gestes
OriginalL'auteur Dinesh Prajapati
Votre approche de cette tâche est très inhabituel. Le simple ajout d'un nouveau point de vue s'en chargent très bien.
Ajouter ce code:
Pour masquer la vue, vous pouvez simplement le supprimer de la mise en page, ou de modifier sa visibilité.
L'approche que vous travailliez est très délicat, et d'autres ont eu des problèmes avec la manipulation des touches. Les exemples incluent Android : Multi-touch et TYPE_SYSTEM_OVERLAY et GestureDetector dans un TYPE_SYSTEM_OVERLAY. Essayez cette recherche de google pour plus d'.
OriginalL'auteur Phil