2017-05-04 1 views
0

Je voudrais faire une chose simple mais je n'ai pas réussi jusqu'à présent: je voudrais savoir quand l'utilisateur a touché n'importe où dans l'activité. Le fait est que lorsque je fais getContentView().setOnTouchListener(...);, l'événement tactile est consommé par les vues enfant, et il ne sera déclenché que si je touche en dehors de toute vue dans mon activité.Détecter quand mon activité a été touchée

Existe-t-il une solution qui n'implique pas l'extension de la classe de vue de contenu?

Merci!

+0

peut-être http://stackoverflow.com/a/16233887/5552022 –

+0

Prendre un coup d'oeil à http://jhshi.me/2014/11/09/monitor-screen-touch-event-in-android/ –

+1

Pourquoi ne pas surcharger 'onDispatchTouchEvent()' de votre 'Activity'? – Abbas

Répondre

1

override

dispatchTouchEvent(MotionEvent ev) 
méthode

l'activité

+0

Cela fonctionne, merci :) – natinusala

0

Vous pouvez essayer ceci:

boolean touched = false; 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    touched=true; 
    Log.e("Toched ","Anywhere"); 

    return touched; 
} 
+0

Où devrais-je mettre ceci? La méthode 'onTouch' n'existe pas dans' Activity' – natinusala

+0

vous devez appliquer l'écouteur tactile à la disposition root. Ensuite, vous pouvez remplacer cette méthode. –

+0

Cela ne fonctionne pas comme indiqué dans mon OP, les vues enfant prennent en charge l'événement de la mise en page racine – natinusala

1

essayer ce code

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return super.onTouchEvent(event); 
}