如果我使用:
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方法时,如何获得“点击”或“触摸”声音?
答案 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**
使用自定义声音
播放用户定义的声音