我已经创建了一个木琴应用程序,我希望它在将其滑过木琴的条形(常规按钮)时能够识别我的手指,并根据手指的位置发出正确的(不同的)声音-在操作过程中不要抬起它滑动。
为简化问题,我首先尝试在将手指滑向它的边界后,从另一个柱开始,仅使其中一个柱响应。
这是我进行的5次尝试:
在这里,酒吧根本没有反应:
bC.setOnGenericMotionListener(new View.OnGenericMotionListener() {
@Override
public boolean onGenericMotion(View view, MotionEvent motionEvent) {
switch(motionEvent.getAction()){
case ACTION_HOVER_ENTER:
mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
break;
}
return false;
}
});
在这里,我按下响应条并向下滑动手指而没有抬起它,只要我的手指触摸屏幕,第一条条的声音就会不断重复(而我的目标是只发出一次声音)。而且当我将手指从边框中滑入时,按钮仍然没有响应:
bC.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
return false;
}
});
这根本没有让酒吧做出回应
bC.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch(motionEvent.getAction()){
case ACTION_HOVER_ENTER:
mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
break;
}
return false;
}
});
一个人也没有做出回应
bC.setOnHoverListener(new View.OnHoverListener() {
@Override
public boolean onHover(View view, MotionEvent motionEvent) {
mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
return false;
}
});
与前面的示例一样,该示例并没有使栏完全响应
bC.setOnHoverListener(new View.OnHoverListener() {
@Override
public boolean onHover(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case ACTION_HOVER_ENTER:
mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
break;
}
return false;
}
});