2010-04-11 17 views
23

ho il seguente codice per Android che funziona bene per riprodurre un suono una volta fa clic sul pulsante:Attivazione evento quando si preme il pulsante in basso in Android

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

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

    } 
}); 

Il mio problema è che voglio il suono di giocare subito premendo il pulsante (tocca giù), non quando viene rilasciato (ritocco). Qualche idea su come posso realizzare questo?

risposta

18

Forse usando un OnTouchListener? Immagino che MotionEvent abbia alcuni metodi per registrare un tocco sull'oggetto.

button.setOnTouchListener(new OnTouchListener() { 

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

Grazie per la risposta. Si sono verificati i seguenti errori durante il tentativo di utilizzare quel codice: - Il tipo new View.OnTouchListener() {} deve implementare il metodo astratto ereditato View.OnTouchListener.onTouch (View, MotionEvent) - Il metodo onTouch (View, MotionEvent) di digita new View.OnTouchListener() {} deve sostituire una superclasse \t metodo - MotionEvent non può essere risolto con un tipo – codeman

+0

La risposta è modificare il livello del compilatore a 1.6 (http://stackoverflow.com/questions/1678122/must- override-a-superclass-method-errors-after-import-a-project-in-eclipse) –

29

Si dovrebbe fare questo: B è il pulsante.

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; 
      } 
     }); 
+0

Ancora ottenendo questi errori: - Il tipo new View.OnTouchListener() {} deve implementare il metodo astratto ereditato View.OnTouchListener. onTouch (View, MotionEvent) - Il metodo onTouch (View, MotionEvent) di tipo new View.OnTouchListener() {} deve sostituire un metodo superclasse - MotionEvent non può essere risolto in un tipo – codeman

+3

Il codice fornito in entrambe le risposte sembra essere corretto. Aggiungi un'importazione a 'android.view.MotionEvent'. Ecco la documentazione di 'OnTouchListener': http://developer.android.com/reference/android/view/View.OnTouchListener.html – CommonsWare

+5

Nice, ha funzionato dopo aver importato MotionEvent e usando questa linea: if (evento. getAction() == MotionEvent.ACTION_DOWN) { – codeman

3

import android.view.MotionEvent;

Problemi correlati