11
votes

Ontouchlistener pour l'écran entier

J'ai un écran rempli de boutons, mais je veux que la méthode d'AOUTUNO utilise toutes les coordonnées de l'écran. J'ai d'abord essayé d'utiliser un relativelayout avec un entouacement, mais n'a jamais réussi à le faire "Connecter" avec l'auditeur (c'est-à-dire que rien ne s'est passé lorsque l'écran a été touché), j'ai également essayé de mettre une vue d'écran en haut de l'écran, puis de faire cette vue invisible. .

Cette dernière méthode a donné des réponses correctes à OnClicks, mais je n'ai jamais réussi à le rendre invisible.

S'il s'agit de la meilleure solution, que je doute fortement, comment puis-je faire l'image de l'image totalement invisible, sans perdre son aouflistener (j'ai expérimenté un fond blanc et une setalpha (0)).

Puis-je faire en sorte que l'Ontouchlistener réagir à l'écran entier, en utilisant des coordonnées globales, tandis que l'écran affiche (et modifiant) plusieurs boutons (de préférence sans l'invisible imageView)?

Si vous ne comprenez pas ce que je demande, n'hésitez pas à vous plaindre de cela. Je vais essayer de combler les lacunes si nécessaire.

EDIT:

J'ai maintenant réussi à résoudre le problème à l'aide de la méthode ONTTouch régulière. J'ai rencontré plusieurs problèmes en faisant à la fois Action_Down et Action_Move Activez les boutons, mais je l'ai enfin fini. Pour les autres personnes lisant ceci: OninterceptTouchevent pourrait éventuellement être utilisé (mais je n'ai jamais compris comment obtenir les coordonnées de l'écran au lieu des coordonnées de vue).


0 commentaires

4 Réponses :



8
votes

Désolé si je me trompe, mais je crois que je venais d'avoir un problème similaire. Je voulais un écran de titre qui affiche une image et sur les mots d'image qui disent "cliquez pour continuer" ou quelque chose de similaire. J'ai gêné un peu et j'ai constaté que vous pouvez faire une mise en page cliquable.

    private FrameLayout fl;
    ...
    fl = (FrameLayout)findViewById(R.id.titlescreenframe);
    fl.setOnClickListener(this);


1 commentaires

Si votre cible est plus récente que 1.6, vous pouvez utiliser Android: ONCLICK = "MODENAME" directement au lieu de paramétrer la mise au point et assigner OnCliquez sur le code.




1
votes

Touch Event Return est d'abord sur les vues d'enfants. Et si vous définissez OnClick ou Aoudouch auditeur pour eux, la vue Parnt (par exemple, le fragment) ne recevra aucun auditeur tactile. Donc, si vous voulez définir un auditeur de balayage pour fragmenter dans cette situation, vous devez la mettre en œuvre dans une nouvelle classe:

            View view=inflater.inflate(R.layout.fragment_main_list, container, false);
        SwipeListenerFragment tdView=(SwipeListenerFragment) view;
        tdView.registerToSwipeEvents(this);


and then Implement SwipeListenerFragment.onSwipeEventDetected in it:

        @Override
    public void swipeLeftDetected() {
        Toast.makeText(getActivity(), "left", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void swipeRightDetected() {
        Toast.makeText(getActivity(), "right", Toast.LENGTH_SHORT).show();
    }


0 commentaires