gpt4 book ai didi

Android:检测滑动手势

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:36 25 4
gpt4 key购买 nike

在我的应用程序中,我尝试在 View 上捕获一个 fling 事件(准确地说是 ScrollView,但也尝试使用 LinearLayout)。

通过设置断点,我可以看到 MotionEvents 正确发生到 onFling() 应该触发的点。

事件流程如下:

  1. View 的onTouchEvent
  2. OnGestureListener 的 onDown
  3. OnGestureListener 的 onShowPress
  4. OnGestureListener 的 onLongPress

我不知道如何继续尝试调试类似的东西,而且谷歌搜索结果不多。有什么指点吗?

我还附上了应该处理手势的相关 View :

import android.content.Context;
import android.content.Intent;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class GestureScrollView extends ScrollView {
private static int MAJOR_MOVE = 60;
private GestureDetector gd;

public GestureScrollView(final Context context) {
super(context);
gd = new GestureDetector(context,
new GestureDetector.OnGestureListener() {

@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
if (Math.abs(dx) > MAJOR_MOVE
&& Math.abs(velocityX) > Math.abs(velocityY)) {
if (velocityX < 0) {
Intent intent = new Intent(context, Main.class);
context.startActivity(intent);
}
}
return false;
}

@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
});
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return gd.onTouchEvent(event);
}
}

最佳答案

从 Activity 而不是从您的 View 获取 MotionEvent。当您的手势检测器基于来自 Activity 的 MotionEvent 时,您将获得 onFling 事件。因此,您必须将 onTouchEvent() 从 GestureScrollView 移至 Activity 类。问候!

关于Android:检测滑动手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910601/

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