gpt4 book ai didi

Android:如何在 ListView 的项目中将滑动手势与长按结合起来

转载 作者:行者123 更新时间:2023-11-30 03:50:26 24 4
gpt4 key购买 nike

我有一个我个性化的 ListView ,我添加了 setOnItemLongClickListener() 效果很好。然后我决定实现一个手势 listView.setOnTouchListener(new OnSwipeTouchListener()),它也很有效。我从另一篇文章中复制了 OnSwipetouchListener 类。

问题是,当我添加滑动监听器时,longPress 不再起作用。我猜这是因为滑动监听器为自己执行长按操作,不允许长按执行任何操作。

我想做的事情:

滑动监听器在 2 秒内获取所有内容,之后所有内容都长按。所以我仍然可以通过滑动手势更改 ListView 内容,我还可以为每个列表项创建函数。

我的代码:

public class OnSwipeTouchListener implements OnTouchListener {

private final GestureDetector gestureDetector = new GestureDetector(new GestureListener());

public boolean onTouch(final View v, final MotionEvent event) {
//super.onTouch(v, event);
return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends SimpleOnGestureListener {

private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;

@Override
public boolean onDown(MotionEvent e) {
return true;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
} else {
if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
...methods...
}

最佳答案

移除 onDown 方法。现在它总是返回 true 并阻止处理 longPress。

关于Android:如何在 ListView 的项目中将滑动手势与长按结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14248564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com