IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Diminuer sensibilité d'action_move ou simuler action_up ?


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2021
    Messages : 32
    Points : 27
    Points
    27
    Par défaut Diminuer sensibilité d'action_move ou simuler action_up ?
    Bonjour j'ai un code android java qui fonctionne parfaitement sur plusieurs device malheureusement sur certains, même en laissant son doigt sur l'écran sans bouger, action move enregistre un déplacement.
    En conséquence case MotionEvent.ACTION_UP n'est jamais activé. Auriez vous une solution en sachant que les trois options :
    MotioEvent.ACTION UP, MotioEvent.ACTION DOWN et MotioEvent.ACTION MOVE me sont nécessaire ? .

    Peut on baisser la sensibilité d'un déplacement sur l'écran ?
    Y a t il un moyen de simuler ACTION UP sans perdre ACTION MOVE ?
    Merci de votre aide super-bienvenue .

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Êtes-vous sûr de ne pas confondre MotioEvent.ACTION UP et MotioEvent.ACTION DOWN ?

    A mon avis, MotioEvent.ACTION UP se produit toujours dès que les doigts quittent l'écran.

    Cordialement.

    Pierre

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2021
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    J'aurais aimé que ce soit si simple mais hélas non. Comme j'ai dit cela tourne bien sur la plupart des appareils mais sur certains, notamment un autoradio, le fait de laisser le doigt appuyé sur l'écran fait croire qu'il bouge et du coup action up n'est jamais activé. Même un appui bref n'est pas enregistrer comme statique mais comme un move. Les coordonnées ne sont jamais identiques et j'ai pas parkinson lol . J'ai envisagé un tas de stratégie pour me passer d'action_up ou pour le simuler mais rien ne fonctionne... Il semblerait que ce problème soit connu mais je n'ai pas trouvé de solution.

  4. #4
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Je n'ai jamais eu de problème avec MotioEvent.ACTION UP. Par contre, oui, j'en ai eu avec le MotioEvent.ACTION DOWN qui était tout de suite masqué par le MotioEvent.ACTION MOVE. J'ai partiellement pallié ce problème avec une temporisation et éventuellement un déplacement min :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    maVue.setOnTouchListener(new View.OnTouchListener() { // Action sur maVue
    	@Override
    	public boolean onTouch(View v, final MotionEvent event) {
    		if ( ! screenTouch) {
    			tTouch = System.currentTimeMillis();
    			posTouch.x = event.getX();
    			posTouch.y = event.getY();
    		...
     
    	case MotionEvent.ACTION_MOVE:
    		if (System.currentTimeMillis() - tTouch > 300) { // Permet au click long d'êttre atteint
    		&& (Math.abs(posTouch.x - event.getX()) > 10 || Math.abs(posTouch.y - event.getY()) > 10) {
    		...
    	}
    Cordialement.

    Pierre.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2021
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Merci Pierre, voici une solution qui reprend la tienne je poste le code si jamais ça intéresse un jour quelqu'un:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    maVue.setOnTouchListener(new View.OnTouchListener() {
                private static final int MIN_DISTANCE = 10;
                float initialX;
                float initialY;
                float dX;
                float dY;
                int lastAction;
                boolean loin = false;
     
                @Override
                public boolean onTouch(View view, MotionEvent event) {
                    switch (event.getActionMasked()) {
                        case MotionEvent.ACTION_DOWN:
                            initialX = event.getRawX();
                            initialY = event.getRawY();
                            dX = view.getX() - event.getRawX();
                            dY = view.getY() - event.getRawY();
                            lastAction = MotionEvent.ACTION_DOWN;
                            return true;
     
                        case MotionEvent.ACTION_MOVE:
                            if (!loin) {
                                if (Math.abs(event.getRawX() - initialX) > MIN_DISTANCE
                                    || Math.abs(event.getRawY() - initialY) > MIN_DISTANCE) {
                                    loin = true;
                                }
                            }
                            view.setX(event.getRawX() + dX);
                            view.setY(event.getRawY() + dY);
                            lastAction = MotionEvent.ACTION_MOVE;
                            return true;
     
                        case MotionEvent.ACTION_UP:
                            if (lastAction == MotionEvent.ACTION_DOWN
                                || (lastAction == MotionEvent.ACTION_MOVE && !loin)) {
                                //  code pour action up ici
                            }
                            loin = false;
                            return true;
     
     
                    }
                    return true;
                }
            });

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme Voyageur de Commerce - Recuit Simulé
    Par dinver dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/06/2009, 22h26
  2. Développpement d'une application de simulation .....
    Par dada5455 dans le forum OpenGL
    Réponses: 6
    Dernier message: 14/12/2003, 10h27
  3. simuler l'execution d'un message
    Par gaut dans le forum C
    Réponses: 14
    Dernier message: 24/07/2003, 23h01
  4. Simuler un coup de molette sur un memo...
    Par dynobremo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/02/2003, 11h31
  5. Simulation de transmission de paquet entre différent réseaux
    Par MelloW dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo