当您点击按钮时,它会向总和中添加5并发出声音。 问题是,当你反复点击它时,它会增加5但声音不会重叠。
请参阅以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic_2);
final MediaPlayer plussound = MediaPlayer.create(basic_2.this, R.raw.plus);
Button plus5b = (Button)findViewById(R.id.button);
plus5b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plussound.start();
for (int i = 1; i <= 5; i++) {
counterValue++;
}
counterdown.setText(String.valueOf(counterValue));
}
});
}
答案 0 :(得分:1)
一个MediaPlayer
一次只能播放一个声音,因此您需要为每个声音创建一个新的MediaPlayer
,因此请在onClick
方法中创建它。还要确保在播放声音后摆脱它(使用MediaPlayer.OnCompletionListener
)以避免出现内存问题。
Button plus5b = (Button)findViewById(R.id.button);
plus5b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = MediaPlayer.create(basic_2.this, R.raw.plus);
// Adding an onCompletionListener to ensure the MediaPlayer releases the memory after playing
plussound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
mediaPlayer = null;
}
});
mediaPlayer.start();
for (int i = 1; i <= 5; i++) {
counterValue++;
}
counterdown.setText(String.valueOf(counterValue));
}
});
答案 1 :(得分:0)
如果您想要声音叠加,则需要以下代码:
{{1}}
声音方法需要在for循环中而不是在for循环内部的原因是因为当它在外面并且单击按钮时它只会熄灭一次,因为每次用户单击它时都不会重复该操作。 / p>