2017-07-21 2 views
-1

J'écris une application Android 5.1 pour une tablette et je suis en mesure de faire la distinction entre la saisie tactile et stylet avec l'aide de l'objet MotionEvent.Désactiver le tactile dans Android (ne permettant que le stylet)

Est-il possible de n'autoriser que l'entrée du stylet (c'est-à-dire que le contact ne devrait avoir aucun effet)?

+0

Ce [lien] (http://lapasa.net/knowledge/?p=490) peut vous aider. – huk

+0

@huk Je peux distinguer entre le toucher et le stylet. Ce que je veux faire est de ne permettre que le stylet. – machinery

Répondre

2

Pas sûr qu'il n'y ait pas de meilleure approche, mais vous pouvez créer une vue personnalisée, mettez-la comme top-top dans votre mise en page (faites-en la largeur et la hauteur pour qu'elle couvre des ares entiers). Le travail de vue seule consisterait à gérer les entrées et à "consommer" tous les événements de mouvement que vous souhaitez filtrer (c'est-à-dire ceux qui ne proviennent pas du stylet) en les marquant comme traités et ignorer tous les autres. manipulation régulière par d'autres vues.

EDIT

La mise en œuvre la plus simple serait de faire votre point de vue étendre quelque chose qui existe, mais simple, comme. (FrameLayout ou Space (de sorte que vous n'avez pas besoin de déranger tous les trucs de mesure) et remplacer onTouchEvent() pour filtrer toutes les entrées. Si c'est quelque chose que vous ne voulez pas passer, "consommez" ici en renvoyant true, sinon renvoyez false afin qu'il se propage. Et important de rendre votre vue de dessus le plus de superposer tous les autres, à savoir

FrameLayout 
    YourCustomView 
    PreviousLayout 
+0

Merci beaucoup pour votre réponse. Pourriez-vous faire un exemple pour clarifier votre approche? – machinery

+0

c'est assez simple, mais voir la réponse éditée –