Context: 我正在使用滑动操作(日期,完成,删除,设置)实现ItemTouchHelper . 我有 getSwipeThreshold() 返回.2f . 这意味着我需要水平拖动2/10的方式来滑动 . 我这样做是为了通过该阈值会改变背景状态(例如完整视图) . 走得更远,4月10日,将再次改变它(例如日期视图) . 这些更改仅在 isCurrentlyActive() 期间调用(即,当用户的手指触摸项目时) . 见下面的代码 .

public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
            return .2f;
        }


        public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
            getDefaultUIUtil().onDraw(c, recyclerView, ((SwipeableHolder) viewHolder).getSwipeableView(), dX, dY, actionState, isCurrentlyActive);

            if (isCurrentlyActive) {
                SwipeAdapter.SwipeableHolder holder = (SwipeAdapter.SwipeableHolder)viewHolder;
                float swipeFraction = dX / viewHolder.itemView.getWidth();

                // Far Left
                if (swipeFraction > 0.4f) {
                    mSwipeState = SWIPE_STATE_DATE;
                    holder.setSwipeState(SWIPE_STATE_DATE);

                    // Close Left
                } else if (swipeFraction > 0.2f){
                    mSwipeState = SWIPE_STATE_COMPLETE;
                    holder.setSwipeState(SWIPE_STATE_COMPLETE);

                    // Far Right
                } else if (swipeFraction < -0.4f) {
                    mSwipeState = SWIPE_STATE_SETTINGS;
                    holder.setSwipeState(SWIPE_STATE_SETTINGS);

                    // Close Right
                } else if (swipeFraction < -0.2f) {
                    mSwipeState = SWIPE_STATE_DELETE;
                    holder.setSwipeState(SWIPE_STATE_DELETE);
                }
            }
        }

Problem: 虽然拖动工作正常但投掷却没有 . 当我在阈值之前甩动并抬起手指时,由于速度,它会过早滑动 . 问题是除非我的手指超过阈值,否则背景不会改变 .

Question: 如何在手指通过滑动阈值之前防止开始滑动?

(或者也许我问的是错误的问题,有一种更好的方法可以将滑动与滑动阈值同步,从而在正确的时间改变背景状态?)