为了账号安全,请及时绑定邮箱和手机立即绑定

网格布局上的手势检测

网格布局上的手势检测

月关宝盒 2019-05-28 16:24:36
网格布局上的手势检测我想fling在我的Android应用程序中使用手势检测功能。我拥有的是GridLayout包含9 ImageView秒的内容。源代码可以在这里找到:Romain Guys的网格布局。我拿的那个文件来自Romain Guy的Photostream应用程序,并且只是略微适应了。对于简单的点击情况,我只需要onClickListener为ImageView我添加的每一个设置为activity实现的主要部分View.OnClickListener。实现识别a的东西似乎无比复杂fling。我认为这是因为它可能跨越views?如果我的活动实现, OnGestureListener我不知道如何将其设置为我添加Grid的Image视图或视图的手势监听器。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)。我一直在看这些来源:检测手势 - 教程SDK文档计算器代码到目前为止,没有什么对我有用,我希望有一些指示。
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

上面的答案之一提到处理不同的像素密度,但建议手动计算滑动参数。值得注意的是,您实际上可以使用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)

我注意到使用这些值会导致应用程序和系统其余部分之间的“感觉”更加一致。


查看完整回答
反对 回复 2019-05-28
  • 3 回答
  • 0 关注
  • 620 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信