我正在开发一个钢琴应用程序,它不是最好的,但它是一个开始。是否有很多onTouchListener?
我正在使用下面的代码来播放声音并更改按钮的图像与触摸事件。
C4.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// PRESSED
if (Sustain == "false") {
streamI25 = sp.play(SC4, Volume, Volume, 0, 0, 1);
C4.setBackgroundResource(R.drawable.whitekey1cilicked);
}
else {
sp.play(SC4, Volume, Volume, 0, 0, 1);
C4.setBackgroundResource(R.drawable.whitekey1cilicked);
}
// just in case somthings happend
final Handler handler2 = new Handler();
handler2.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
C4.setBackgroundResource(R.drawable.whitekey1);
}
}, keyUpTime);
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
// RELEASED
C4.setBackgroundResource(R.drawable.whitekey1);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
sp.pause(streamI25);
}
}, releaseTime);
return true; // if you want to handle the touch event
}
return false;
}
});
是不是?把所有这些代码写在钢琴上的每一个键都不是愚蠢的吗?
我可以在OnClick方法中为我的所有按钮使用几行代码,但我需要onTouch的事件。写72 onTouchListener是否正确?
我不是一个说非常多经验的人。但是,如果你想这样做,我个人会创建一个钢琴键的类,并创建你的键作为对象,并将它们存储在一个数组中。这样你可以给他们所有他们需要的一切,并且节省很多空间。只有当你选择以这种确切的方式做到这一点。 – Pixelknight1398