gpt4 book ai didi

android - 除了滑动手势外,如何在 SurfaceView 上同时进行单点触摸?

转载 作者:行者123 更新时间:2023-11-29 17:51:53 25 4
gpt4 key购买 nike

我使用的是表面 View ,我只需要识别向上/向下的手指滑动。我发现这很有用:How to handle right to left swipe gestures

但是,我还希望在用户单击表面 View (只需单击一次)时调用给定函数,例如 Foo()。这很简单,但是当我添加手势滑动时变得非常复杂。

有谁知道如何同时进行:单点触摸事件和向上/向下手指滑动?

这是我尝试过的:

  • 在 OnSwipeTouchListener 内部:

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

    但这导致从用户开始手势的那一刻开始调用 Foo(),直到手指从屏幕上松开(数百次)。

  • 我还尝试放弃此 OnSwipeTouchListener 类并在表面 View 本身内部使用 onTouchEvent()。这适用于单点触摸事件;但是,我无法检测到向上/向下滑动。

     if (event.getAction() == MotionEvent.ACTION_DOWN) {
    mDownY = event.getY();
    }
    else if (event.getAction() == MotionEvent.ACTION_UP) {
    // This code was never called!!
    }

最佳答案

这可能会有所帮助。

1) 让您的Activity 实现GestureDetector.OnGestureListener

2) 在 ActivityonCreate() 中添加一行 gDetector = new GestureDetector( getBaseContext(), this );

3) 覆盖属于 GestureDetector 的六个方法中的部分/全部:

@Override
public boolean onDown(MotionEvent arg0) {
return false;
}
@Override
public boolean onFling(MotionEvent start, MotionEvent finish, float xVelocity, float yVelocity) {
if (start.getRawY() < finish.getRawY()) {
Log.d( TAG, "Swiped down!" );
} else {
Log.d( TAG, "Swiped up!" );
}
return true;
}
@Override
public void onLongPress(MotionEvent arg0) {
}
@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) {
return false;
}
@Override
public void onShowPress(MotionEvent arg0) {
}
@Override
public boolean onSingleTapUp(MotionEvent arg0) {
Log.d( TAG, "Just tapped at " + arg0.getRawX() + "," + arg0.getRawY() + "!" );
return false;
}

就您的目的而言,听起来您只需要填写 onFlingonSingleTapUp,这就是我在这里所做的一切。

4) 覆盖onTouchEvent:

@Override
public boolean onTouchEvent(MotionEvent me) {
return gDetector.onTouchEvent(me);
}

(4)很重要!否则手势检测器不会触发!

这个解释更多herehere ;我只是做了一点简化。

ETA:第一个链接来自androidsnippets.com(不知道作者是谁),该链接本身的内容改编自anddev.org,原作者“Danuubz”。已弃用的构造函数(已包含在上面)的修复来自 androidsnippets.com 上的用户“rurussell00”。第二个链接来自 William J. Francis。

关于android - 除了滑动手势外,如何在 SurfaceView 上同时进行单点触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22316766/

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