在android中,在listview中滑动时,视图会前后移动

在android中,在listview中滑动时,视图会前后移动,android,android-listview,Android,Android Listview,我有一个列表视图,每个列表项都包含一个按钮(上面有一个文本)和一个图像。我尝试在用户触摸listitem并将手指向左或向右移动时实现滑动效果。这是我在IntercetTouchEvent中的代码 case MotionEvent.ACTION_DOWN: mDownX=motionEvent.getX(); Log.i(TAG, "onInterceptTouchEvent.ACTION_DOWN");

我有一个列表视图,每个列表项都包含一个按钮(上面有一个文本)和一个图像。我尝试在用户触摸listitem并将手指向左或向右移动时实现滑动效果。这是我在IntercetTouchEvent中的代码

case MotionEvent.ACTION_DOWN:
                mDownX=motionEvent.getX();
                Log.i(TAG, "onInterceptTouchEvent.ACTION_DOWN");
                break;
            case MotionEvent.ACTION_MOVE:
                float deltaX=motionEvent.getX()-mDownX;
                int mSwipingSlop=deltaX>0?mSlop:-mSlop;
                this.setTranslationX(deltaX-mSwipingSlop);
                Log.i(TAG, "onInterceptTouchEvent.ACTION_MOVE");
                break;
它起作用了。但问题是,刷卡时会产生模糊效果。即使我朝一个方向滑动,视图中的按钮似乎前后移动得非常快,从而产生模糊效果

有人能说出这里的问题和可能的解决方案吗?

在行动中打印deltaX的值\u MOVE


我重现了这个问题,这似乎有效:使用
setTranslationX(deltaX mSwipingSlop)
,而不是
setX(getX()+deltaX mSwipingSlop)

使用
getRawX()
代替
getX()
也可以,但是需要一些额外的计算来适应第二个手势


但是我不完全确定为什么会发生这种行为。

如果你只是执行
这个。setTranslationX(deltaX)
?@Niekharman:在这种情况下,模糊效果最初不太明显。但在第一次刷卡后,如果您再次尝试刷卡,您可以再次看到相同的模糊效果。请注意,我并没有在刷卡后忽略该视图。我想继续从上次保留视图的位置滑动视图您能打印出您在移动事件中设置的translationX吗?它们是单调递增/递减的吗?@Niekharman:完成了。它们似乎并不是单调地增加。有一些差异。它不是一个恒定的增加或减少。但这种冲击在不断增加。我的意思是,我只在一个方向上刷卡。似乎您会收到两次事件:每秒的值似乎正确。如果使用
onTouchEvent
,是否会发生相同的行为?如果您的子视图会窃取它们,您可能需要在
onInterceptTouchEvent
中返回
true
onInterceptTouchEvent.ACTION_DOWN
\ onInterceptTouchEvent.ACTION_MOVE---13.481277
onInterceptTouchEvent.ACTION_MOVE---4.9546204
\onInterceptTouchEvent.ACTION_MOVE---16.477112
onInterceptTouchEvent.ACTION_MOVE---30.629227
onInterceptTouchEvent.ACTION_MOVE---33.33777
onInterceptTouchEvent.ACTION_MOVE---53.111282
onInterceptTouchEvent.ACTION_MOVE---53.15001
onInterceptTouchEvent.ACTION_MOVE---74.20006
onInterceptTouchEvent.ACTION_MOVE---75.70354
onInterceptTouchEvent.ACTION_MOVE---94.25169
onInterceptTouchEvent.ACTION_MOVE---95.33977
onInterceptTouchEvent.ACTION_MOVE---116.58623
onInterceptTouchEvent.ACTION_MOVE---117.084274
onInterceptTouchEvent.ACTION_MOVE---140.37877
onInterceptTouchEvent.ACTION_MOVE---137.01903
onInterceptTouchEvent.ACTION_MOVE---157.82243
onInterceptTouchEvent.ACTION_MOVE---152.6262
onInterceptTouchEvent.ACTION_MOVE---172.87059
onInterceptTouchEvent.ACTION_MOVE---165.39714
onInterceptTouchEvent.ACTION_MOVE---182.45793
onInterceptTouchEvent.ACTION_MOVE---174.23326
onInterceptTouchEvent.ACTION_MOVE---190.94212
onInterceptTouchEvent.ACTION_MOVE---182.86662
onInterceptTouchEvent.ACTION_MOVE---196.75847