android - Android:检测触摸事件何时完成
问题描述
我在我的应用程序中使用 viewpager2。我使用 rxjava2(可观察间隔)启用了自动滑动。我想在用户触摸查看器时停止自动滑动,并且在触摸完成后开始自动滑动。但是我找不到正确的方法来检测触摸完成事件。我尝试了 action_up,但它仅在单击等快速触摸时触发。当用户触摸 2 秒并完成触摸时,它不会被检测到。
Observable.interval(SLIDER_DELAY, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
if (!homeAdapter.touchStatus()) {
if (viewPagerSlider.currentItem < homeAdapter.itemCount - 1) {
viewPagerSlider.setCurrentItem(
viewPagerSlider.currentItem + 1,
true
)
} else {
viewPagerSlider.setCurrentItem(0, true)
}
}
}
家庭适配器
itemView.setOnTouchListener { v, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> isTouched = true
MotionEvent.ACTION_UP -> isTouched = false
else -> {}
}
true
}
fun touchStatus() = this.isTouched
一段时间后,如何检测用户何时完成触摸事件?
解决方案
推荐阅读
- angularjs - 两个日期之间的差异 moment.js
- ios - 在 Swift 中使用字体数据(.ttf 或 .otf)与图像数据(png 或 jpg)
- docker - Docker:如何将我的数据库保存在一个容器中,并在另一个容器中使用它?
- angular - 获取父 Angular 组件引用的正确方法是什么?
- javascript - 滞后 onmousemove 和 div 位置
- r - 在 R 中的计划比较中使用 summary() 和 summary.lm() - 为什么输出不同?
- c++ - Win32/Win API C++ 对话框未显示
- oracle12c - oracle 12c 有两个数据库实例
- php - 如何从数组中删除所有相同或共同的值..它是不同的..?
- r - R tableGrob 热图或列中的条件格式