触摸按钮上没有声音

时间:2012-01-27 21:32:53

标签: android button touch audio

如果我使用:

    final Button btnNught = (Button) findViewById(R.id.night);
    btnNught.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            btnNught.setPressed(true);
        }
    });

如果我点击按钮,我会听点击声,但如果我使用:

    btnNught.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (btnNught.isPressed()) {
                btnNught.setPressed(false);
                return true;
            }
            else {
                btnNught.setPressed(true);
                return false;
            }
        }
    });

触摸时我不听任何声音。 哪里弄错了?

编辑: 我想创建像togglebutton这样的按钮,有两种状态:按下和不按下,当然有两种不同的颜色(正常 - 浅灰色非按下和绿色按下时)。

在这种情况下(上图),当我触摸按钮时,我不听任何声音,但如果我使用onClick方法,我会听'点击'声音。 当我使用onTouch方法时,如何获得“点击”或“触摸”声音?

6 个答案:

答案 0 :(得分:6)

这样做对我有用:

btnNught.setSoundEffectsEnabled(true);
btnNught.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
       if(event.getAction()!=MotionEvent.ACTION_UP ||        
          event.getAction()!=MotionEvent.ACTION_DOWN) 
       {
           return false;
       }
       if(event.getAction()==MotionEvent.ACTION_DOWN)
       {
            btnNught.playSoundEffect(SoundEffectConstants.CLICK);
            //Set whatever color you want to set
       }
       else 
       {

       }
       return true;
    }
});

答案 1 :(得分:1)

请问,您可以在什么条件下到达btnNught.setPressed(true);在第二个例子中?正如我所见,你根本无法按下按钮。在操作向下您消耗操作,因此不会按下按钮。

编辑:在侦听器的开头放置一个断点,并在按钮使用的不同变体中输入它。并检查行为。

答案 2 :(得分:1)

尝试将android:soundEffectsEnabled="true"添加到您的<Button>代码。

答案 3 :(得分:0)

你的问题不是很明确,你想播放声音的时候我会回答你的问题,假设你想在Action_DOWN发生时播放它。如果你打算创建一个切换按钮,你的代码应该看起来像这样< / p>

btnNught.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
       if(event.getAction()!=MotionEvent.ACTION_UP ||        
               event.getAction()!=MotionEvent.ACTION_DOWN) 
       {
             return false;
       }
       if(event.getAction()==MotionEvent.ACTION_DOWN)
       {
          btnNught.setPressed(true);
          //Set whatever color you want to set

       }
       else 
       {
          btnNught.setPressed(false);
       }
        return true;
    }
});

答案 4 :(得分:0)

以下行将播放咔嗒声:

btnNught.playSoundEffect(SoundEffectConstants.CLICK);

答案 5 :(得分:0)

有两种听音方式

1使用内置声音

Go to Settings -> Sound -> 
And do the following settings 

sound profile set **Normal**
Touch sound set **ON**
  1. 使用自定义声音

    播放用户定义的声音