【发布时间】:2011-06-26 04:48:54
【问题描述】:
我正在尝试制作类似鼓机的东西,当你按下按钮时它会发出声音。但是,我无法让它为每个按钮更改声音,因为一个 onTouch 方法可以处理所有事件。到目前为止的代码如下:
包 com.henzl0l.drummaschine;导入 java.io.IOException;
导入android.app.Activity; 导入android.media.MediaPlayer; 导入 android.media.MediaPlayer.OnCompletionListener; 导入android.os.Bundle; 导入android.view.View; 导入 android.view.View.OnClickListener; 导入 android.view.View.OnTouchListener; 导入android.widget.Button; 导入android.view.MotionEvent;
公共类 DrumMaschine 扩展 Activity { /** 在第一次创建活动时调用。 */ final String[] sList = new String[] {"/sdcard/Music/kick.wav","/sdcard/Music/hat.wav" }; 最终媒体播放器 mPlayer1 = 新媒体播放器(); 最终媒体播放器 mPlayer2 = 新媒体播放器(); @覆盖 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
Button btn_main1 = (Button) findViewById(R.id.cmd_main1);
Button btn_main2 = (Button) findViewById(R.id.cmd_main2);
btn_main1.setOnTouchListener(tListener1);
btn_main2.setOnTouchListener(tListener1);
}
private OnTouchListener tListener1 = new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
switch ( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
sPlay(0,true);
}
return false;
}
};
private void sPlay(Integer num, Boolean loop){
try {
mPlayer1.reset();
mPlayer1.setDataSource(sList[num]);
mPlayer1.prepare();
mPlayer1.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}
我似乎无法使用 v 获取按钮的文本(现在是“1”、“2”等),所以我很难过。我现在只玩了两天的android。对不起,如果没有任何意义嘿嘿。
【问题讨论】: