这是一个简单的音序器,有16个按钮,每个按钮触发一个样本。我的猜测是,这可以以更优雅的方式完成(不是写相同的16倍)。但是如何?
@Override
public void onCheckedChanged(CompoundButton btn, boolean playing) {
// TODO Auto-generated method stub
if (btn == tgl1) {
if (playing) {
s1.seekTo(0);
s1.start();
} else {
s1.pause();
}
}
if (btn == tgl2) {
if (playing) {
s2.seekTo(0);
s2.start();
} else {
s2.pause();
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我会创建一个从每个按钮id到示例的地图,并在启动时填充它。然后,您可以这样做:
s = samplesMap.get(btn.getId());
if(playing) {
s.seekTo(0);
s.start();
} else {
s.pause();
}
答案 2 :(得分:0)
您必须将按钮添加到Map<CompoundButton, MediaPlayer>
。然后,您可以使用按钮上的查找来获取s2
或sN
对象。
map.put(button1, s1);
map.put(button2, s2);
// And so on.
MediaPlayer s = map.get(btn);
if (playing) {
s.seekTo(0);
s.start();
} else {
s.pause();
}
答案 3 :(得分:0)
假设您有16个不同的按钮,并且每个按钮上有16个不同的MediaPlayer
个实例。如果是这样的话可能是
Hashmap<Button, MediaPlayer>