我正在为Android制作一个音乐应用程序,我在其中检测用户完成的ontouch事件,使按下的按键发声,并且还可以更改颜色。我想制作模拟事件以显示歌曲的音符。
我面临的问题是每次触摸事件之间没有延迟,或者至少我不知道如何正确地做到这一点。你可以听到两个音符的声音,但是你看不到它们的颜色变化。
应该怎么做?
这是我为了获得2个按键而测试过的。我也尝试过它之间的ACTION_UP
,但它没有用。
//First key pressed
piano.dispatchTouchEvent(pulse.obtain(SystemClock.upTimeMillis(),SystemClock.upTimeMillis() + 1000, pulse.ACTION_DOWN,0,0,8)
//Second key pressed
piano.dispatchTouchEvent(pulse.obtain(SystemClock.upTimeMillis(),SystemClock.upTimeMillis() + 1000, pulse.ACTION_DOWN,80,0,8)
我没有考虑过同时触摸2个音符的可能性,每次触摸事件只有一个。
答案 0 :(得分:0)
class Press {
static final long PRESS_DELAY = 150;
private final Handler handler = new Handler(Looper.getMainLooper());
private final View view;
Press(View view) {
this.view = view;
}
void press() {
if (view.getVisibility() != View.VISIBLE) {
return;
}
view.setPressed(true);
view.invalidate();
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setPressed(false);
view.invalidate();
}
}, PRESS_DELAY);
}
}
然后,
new Press(myButton).press();