【发布时间】:2022-06-19 20:28:18
【问题描述】:
我正在制作像 instagram 这样的视频故事。所以我遇到了手势问题。
问题是我在做这些动作时处理了 ACTION_CANCEL,如果我举起手指,ACTION_UP 不会调用
- 我在 ViewPager 的第一页,我向左->向右快速滑动(我的手指仍在屏幕上)
- 我在 ViewPager 的中间,我向左->向右或向右->向左滑动,但没有完成滑动,我仍然在当前页面中并且我的手指在屏幕上
- 我在屏幕上乱动(我的手指还在屏幕上)
所以如果我在调用 ACTION_CANCEL 后抬起手指,我的视频将保持“暂停”状态
最后,问题是:Action_Cancel 之后如何处理 Action_Up 事件?
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (gestureDetector?.onTouchEvent(event) == true) return true
when (event?.actionMasked) {
MotionEvent.ACTION_DOWN -> {
viewModel.videoPause()
}
MotionEvent.ACTION_UP -> {
viewModel.videoResume()
}
MotionEvent.ACTION_CANCEL -> {
// Handles when doing these moves and ACTION_UP doesn't call if I raise my finger
// 1. I'm in 1st page of ViewPager and I swipe left->right fastly (my finger still on screen)
// 2. I'm in the middle of ViewPager and I swipe left->right or right->left, but not finishing the swipe
// and I'm still in the current page and my finger on screen
// 3. I'm moving chaosly on screen (my finger still on screen)
// So if I raise my finger after ACTION_CANCEL called, my video stay in "PAUSE" state
}
else -> { }
}
return true
}
【问题讨论】:
标签: android kotlin motionevent user-stories