首页 > 解决方案 > 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

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

标签: androidkotlin

解决方案


推荐阅读