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 :

SimpleOnGestureListener dans une classe séparée pour être appelée depuis plusieurs activity


Sujet :

Android

  1. #1
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut SimpleOnGestureListener dans une classe séparée pour être appelée depuis plusieurs activity
    Bonjour,

    J'utilise une classe dérivée de SimpleOnGestureListener afin de pouvoir interagir avec les mouvements du doigt sur l'écran. Ca fonctionne bien

    Le problème étant que je recrée cette classe et tout ce qui va avec pour chaque Activity dans mon application, ce qui fait beaucoup de copier-coller.

    Comment arriver a créer une classe indépendante ou je n'aurais qu'a gérer 2 évènements (MouvementADroite() et MouvementAGauche() ) dans chaque Activity ?

    Voila en gros mon code simplifié copié dans chaque Activity :
    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
    46
    public class Activity1 extends Activity {
     
        private GestureDetector gestureDetector;
        View.OnTouchListener gestureListener;
     
        public void onCreate(Bundle savedInstanceState) {
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            super.onCreate(savedInstanceState);
            this.setContentView(R.layout.truc);
     
            gestureDetector = new GestureDetector(new MyGestureDetector());
            gestureListener = new View.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    if (gestureDetector.onTouchEvent(event)) {
                        return true;
                    }
                    return false;
                }
            };
        }
     
        /**
        * Gestion du déplacement entre vues par simple glissage du doigt
        * @author Admin
        *
        */
        class MyGestureDetector extends SimpleOnGestureListener {
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                try {
                    if (...) {
    	                // droite vers gauche : le but serait de déclencher un évènement
                    	FonctionDroite();
                    }
                    else if (...) {
    	                // gauche vers droite : le but serait de déclencher un évènement
                    	FonctionGauche();
                    }
                } catch (Exception e) {
                    // nothing
                }
                return false;
            }
        }
     
    }

  2. #2
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    Je me permets un p'tit "up".
    Personne n'aurait une idée pour implémenter cela ?
    merci

  3. #3
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Tu peux créer une class Activity1 dérivé Activity avec comme procédure Fonction gauche et droite en protected avec la gestion de la gesture à l'intérieur de celle-ci.

    Puis lorsque tu créer une nouvelle activity , tu l'as fait dérivé de Activity1 ainsi tu auras les procédure fonction gauche et droite , il te faudra juste les surcharger si tu veux les modifier

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Oui, tu as plusieurs choix de conception. Je sais pas si y'en a mieux que d'autres.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public interface IActivityGesture {
     
       public void fonctionGauche();
       public void fonctionDroite();
    }
    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
     
     
    class MyGestureDetector extends SimpleOnGestureListener {
         private IActivityGesture mActivity;
         public MyGestureDetector(IActivityGesture anActivity) {
             super();
             mActivity = anActivity;
         }
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                try {
                    if (...) {
    	                // droite vers gauche : le but serait de déclencher un évènement
                    	mActivity.fonctionDroite();
                    }
                    else if (...) {
    	                // gauche vers droite : le but serait de déclencher un évènement
                    	mActivity.fonctionGauche();
                    }
                } catch (Exception e) {
                    // nothing
                }
                return false;
            }
        }
    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
    public class Activity1 extends Activity implements IActivityGesture  {
     
        private GestureDetector gestureDetector;
        View.OnTouchListener gestureListener;
     
        public void onCreate(Bundle savedInstanceState) {
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            super.onCreate(savedInstanceState);
            this.setContentView(R.layout.truc);
     
            gestureDetector = new GestureDetector(new MyGestureDetector(this));
            gestureListener = new View.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    if (gestureDetector.onTouchEvent(event)) {
                        return true;
                    }
                    return false;
                }
            };
        }
       public void fonctionGauche() {
        //blabla
       }
       public void fonctionDroite(){
        //blabla
       }
     
    }
    (le code n'est pas testé et fait à la volé, mais le principe est là...)

  5. #5
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    merci bien pour les idées !!
    je marque Résolu, je teste ca bientot ...

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

Discussions similaires

  1. [VB.Net] Appeler un cookie dans une classe
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/06/2006, 00h47
  2. Appel de fonction dans une classe
    Par saint-pere dans le forum Langage
    Réponses: 3
    Dernier message: 08/05/2006, 23h13
  3. Réponses: 1
    Dernier message: 21/03/2006, 15h29
  4. Appel de fonction dans une classe
    Par Seth77 dans le forum Langage
    Réponses: 8
    Dernier message: 16/01/2006, 11h32
  5. Réponses: 14
    Dernier message: 04/12/2005, 09h08

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