gpt4 book ai didi

java - 是否应该有很多 onTouchListener?

转载 作者:行者123 更新时间:2023-12-02 03:19:37 28 4
gpt4 key购买 nike

我正在开发一个钢琴应用程序,它不是最好的,但它是一个开始。

我使用下面的代码来播放声音并通过触摸事件更改按钮的图像。

        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 这样写是否正确?

最佳答案

您最好在您的 Activity 或使用 implements OnTouchListener 扩展的另一个处理类中实现 OnTouchListener。您的 View 可以有一个标签,您可以在方法中对其进行分析( View 作为参数传递给函数调用)。

你可以这样写

class MyActivity extends Activity implements View.OnTouchListener

然后

C4.setTag("C4"); // or by XML
C4.setOnTouchListener(this);

在 onTouch 中,您更改 view 而不是 C4 并根据标签选择声音。

关于java - 是否应该有很多 onTouchListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821006/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com