2012-02-20 54 views
0

如果我执行OnClickListener,声音效果将在点击按钮时起作用。在实施OnTouchListener时,音效无法触及它。那么如何在实施OnTouchListener时启用音效呢?如何在触摸按钮时启用声音效果?

编辑:

下面是代码,如果我用一下方法:

public class CalculatorActivity extends Activity implements OnClickListener 
{ 
    //... 
    private Button btn1; 
    private EditText edLCD; 
    //... 

    public void onCreate(Bundle savedInstanceState) 
    { 
     //... 
     btn1 = (Button) findViewById(R.id.d1); 
     btn1.setOnClickListener(this); 

     edLCD = (EditText) findViewById(R.id.edLCD); 
    } 

    //... 

    public void onClick(View v) 
    { 
     edLCD.setText(edLCD.getText().toString() + "1"); 
    } 
} 

这里是代码,如果我用感人的办法:

public class CalculatorActivity extends Activity implements OnTouchListener 
{ 
    //... 
    private Button btn1; 
    private EditText edLCD; 
    //... 

    public void onCreate(Bundle savedInstanceState) 
    { 
     //... 
     btn1 = (Button) findViewById(R.id.d1); 
     btn1.setOnTouchListener(this); 

     edLCD = (EditText) findViewById(R.id.edLCD); 
    } 

    //... 

    public boolean onTouch(View v, MotionEvent event) 
    { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) 
     { 
      edLCD.setText(edLCD.getText().toString() + "1"); 
     } 
     return true; 
    } 
} 
+1

显示您的代码。此外,为什么你想要做这个'触摸'的行动,而不是'点击'行动? – Squonk 2012-02-20 00:38:48

+0

@MisterSquonk触摸一个按钮可以提供更快的响应,而点击该按钮则不会响应,直到您从屏幕上抬起手指。此外,我应该向您展示哪些代码?我只是要求在触摸按钮时启用声音效果的方式。 – 2012-02-20 00:42:52

+0

只需使用onClick,一些按钮不会对onTouch和onClick产生反应。不要破坏用户体验! – 2012-02-20 00:48:03

回答

3

尝试.. 。

public boolean onTouch(View v, MotionEvent event) 
{ 
    if(event.getAction() == MotionEvent.ACTION_DOWN) 
    { 
     v.playSoundEffect(SoundEffectConstants.CLICK); 
     edLCD.setText(edLCD.getText().toString() + "1"); 
    } 
    return true; 
} 
+0

+1完美。感谢队友:) – 2012-02-20 01:31:03

+0

很高兴帮助。我们最终到了那里。 :) – Squonk 2012-02-20 01:50:37