J'ai créé un TYPE_SYSTEM_OVERLAY
et je souhaite capturer des événements tactiles/tactiles sur cette superposition en utilisant un service
.GestureDetector dans un TYPE_SYSTEM_OVERLAY
La superposition fonctionne correctement, mais le problème est qu'elle ne peut pas capturer les événements tactiles lorsque j'essaie d'y incorporer le GestureDetector
. Quand je tape sur l'écran, le pain grillé msg « onDown » na pas .. show
apprécieront si quelqu'un me dit où je suis allé ai mal :(J'ai essayé de mettre en œuvre la GestureDetector
en dehors de la classe OverlayView
mais aussi aucun résultat.
public class NUSLogService extends IntentService {
OverlayView mView;
@Override
public void onCreate() {
super.onCreate();
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.BOTTOM;
params.setTitle("TouchLayer");
mView = new OverlayView(getApplicationContext());
final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if(mView != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mView);
mView = null;
}
}
//self-created overlay class
class OverlayView extends ViewGroup implements OnGestureListener{
private GestureDetector gestureScanner = new GestureDetector(this);
public OverlayView(Context context) {
super(context);
Toast.makeText(getContext(),"OverlayView", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// return super.onTouchEvent(event);
return gestureScanner.onTouchEvent(event);
}
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
}
@Override
public boolean onDown(MotionEvent e) {
Toast.makeText(getContext(),"onDown", Toast.LENGTH_SHORT).show();
return false;
}
}
Salut merci pour la réponse. mais si je mets toast msg sur 'onTouchEvent', ça marche ... est-ce important si j'utilise' IntentService'? Je suis l'implémentation sur Android 2.2, donc ça devrait aller pour le moment? – star
@star: "Est-ce important si j'utilise IntentService?" - Bien sûr, c'est important. Vous supprimez votre vue immédiatement après l'avoir ajoutée. – CommonsWare
J'ai implémenté le GestureDetector en utilisant 'Service' mais je ne peux pas non plus travailler [i cant @Override the onTouchEvent()? Le même code fonctionne en utilisant 'Activity'. Toute idée comment je peux utiliser le GestureDetector en utilisant le Service? – star