网格布局上的手势检测

网格布局上的手势检测

我想fling在我的Android应用程序中使用手势检测功能。

我拥有的是GridLayout包含9 ImageView秒的内容。源代码可以在这里找到:Romain Guys的网格布局

我拿的那个文件来自Romain Guy的Photostream应用程序,并且只是略微适应了。

对于简单的点击情况,我只需要onClickListenerImageView我添加的每一个设置为activity实现的主要部分View.OnClickListener。实现识别a的东西似乎无比复杂fling。我认为这是因为它可能跨越views

  • 如果我的活动实现, OnGestureListener我不知道如何将其设置为我添加GridImage视图或视图的手势监听器。

    public class SelectFilterActivity extends Activity implements
       View.OnClickListener, OnGestureListener { ...
  • 如果我的活动实现, OnTouchListener那么我没有 onFling方法override(它有两个事件作为参数,允许我确定是否值得注意)。

    public class SelectFilterActivity extends Activity implements
        View.OnClickListener, OnTouchListener { ...
  • 如果我做了一个自定义View,就像GestureImageView那个扩展ImageView我不知道如何告诉活动fling从视图中发生了。无论如何,我试过这个,当我触摸屏幕时没有调用这些方法。

我真的只需要一个跨视图的具体例子。什么,何时以及如何附上这个listener?我还需要能够检测单击。

// Gesture detectionmGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        int dx = (int) (e2.getX() - e1.getX());
        // don't accept the fling if it's too short
        // as it may conflict with a button push
        if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
            if (velocityX > 0) {
                moveRight();
            } else {
                moveLeft();
            }
            return true;
        } else {
            return false;
        }
    }});

是否可以在屏幕顶部放置透明视图来捕捉啪啪声?

如果我inflate从XML中选择不使用我的子图像视图,我可以将GestureDetector构造函数参数传递给ImageView我创建的新子类吗?

这是我试图让fling检测工作的非常简单的活动:SelectFilterActivity(改编自photostream)

我一直在看这些来源:

到目前为止,没有什么对我有用,我希望有一些指示。


月关宝盒
浏览 621回答 3
3回答

慕尼黑8549860

上面的答案之一提到处理不同的像素密度,但建议手动计算滑动参数。值得注意的是,您实际上可以使用ViewConfiguration类从系统获得缩放的,合理的值:final ViewConfiguration vc = ViewConfiguration.get(getContext());final int swipeMinDistance = vc.getScaledPagingTouchSlop();final int swipeThresholdVelocity = vc.getScaledMinimumFlingVelocity();final int swipeMaxOffPath = vc.getScaledTouchSlop();// (there is also vc.getScaledMaximumFlingVelocity() one could check against)我注意到使用这些值会导致应用程序和系统其余部分之间的“感觉”更加一致。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java