Android:检测触摸事件何时结束

时间:2020-04-17 13:13:52

标签: android kotlin

我在应用程序中使用viewpager2。我使用rxjava2(可观察的间隔)启用了自动滑动。我想在用户触摸ViewPager并在触摸完成后开始自动滑动时停止自动滑动。但是我找不到检测触摸完成事件的正确方法。我尝试了action_up,但仅在像click这样的快速触摸时才触发。无法检测到用户何时触摸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)
                    }
                }
            }

HomeAdapter

itemView.setOnTouchListener { v, event ->
                when (event.action) {
                    MotionEvent.ACTION_DOWN -> isTouched = true
                    MotionEvent.ACTION_UP -> isTouched = false
                    else -> {}
                }
                true
            }

fun touchStatus() = this.isTouched

如何检测一段时间后用户何时完成触摸事件?

0 个答案:

没有答案