问题描述
我正在为 Android 创建一个钢琴应用程序,目前我正在努力处理多点触控手势。 这是问题: 用户想要一次弹奏三个键。他们按下钢琴键盘上的三个键,而不是弹奏它们,系统拦截了手势并打开了部分截图叠加层(explanation看起来如何)
如何防止此类行为?会不会是某些 MotionEvent 冒泡引起的?两个、四个和更多键一次按预期工作。我还注意到,这种部分截图手势在 Messenger 或 Reddit 等其他一些应用程序中不起作用。
PianoView.kt:
...
override fun onTouchEvent(event: MotionEvent?): Boolean {
if(event == null) {
return false
}
val i = event.actionIndex
val touchedPianoKey: PianoKey? = getKeyAt(event.getX(i),event.getY(i))
return when (event.actionMasked) {
MotionEvent.ACTION_DOWN,MotionEvent.ACTION_POINTER_DOWN -> {
if (touchedPianoKey != null) {
// play sound
}
true
}
MotionEvent.ACTION_UP,MotionEvent.ACTION_POINTER_UP -> {
if(touchedPianoKey != null) {
// stop playing sound
}
true
}
MotionEvent.ACTION_CANCEL -> {
for (key in keys) {
// stop playing sound
}
true
}
else -> false
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)