web-dev-qa-db-fra.com

Événement de déclenchement lorsque le bouton est enfoncé dans Android

J'ai le code suivant pour Android qui fonctionne bien pour jouer un son une fois qu'un bouton est cliqué:

Button SoundButton2 = (Button)findViewById(R.id.sound2);
        SoundButton2.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        mSoundManager.playSound(2);

    }
});

Mon problème est que je veux que le son soit joué immédiatement après avoir appuyé sur le bouton (toucher vers le bas), pas quand il est relâché (toucher vers le haut). Des idées sur la façon dont je peux y arriver?

29
codeman

Peut-être en utilisant un OnTouchListener? Je suppose que MotionEvent aura quelques méthodes pour enregistrer une touche sur l'objet.

   button.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
     // TODO Auto-generated method stub
     return false;
    }
   }))
22
Peterdk

Vous devez le faire: b est le bouton.

b.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                    mSoundManager.playSound(2);
                    return true;
                }

                return false;
            }
        });
34
Macarse

import Android.view.MotionEvent;

3
tomanesq