我在ViewFlipper内有一个ListView,当用户在屏幕上滑动时会翻转它。单击ListView将打开浏览器。有时在我刷卡时,它被检测为对ListView的触摸,并会打开浏览器。这可能很烦人。如何防止这种情况发生?
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
}
if (viewFlipper.getDisplayedChild() == 0) {
// TODO: light up left
flipperPosition = 0;
} else if (viewFlipper.getDisplayedChild() == 1) {
// TODO: light up middle
flipperPosition = 1;
} else if (viewFlipper.getDisplayedChild() == 2) {
// TODO: light up right
flipperPosition = 2;
}
} catch (Exception e) {
System.out.println(e);
}
return false;
}
}
protected MotionEvent downStart = null;
public boolean onInterceptTouchEvent(Mothtml" target="_blank">ionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// keep track of the starting down-event
downStart = MotionEvent.obtain(event);
break;
case MotionEvent.ACTION_MOVE:
// if moved horizontally more than slop*2, capture the event for ourselves
float deltaX = event.getX() - downStart.getX();
if(Math.abs(deltaX) > ViewConfiguration.getTouchSlop() * 2)
return true;
break;
}
// otherwise let the event slip through to children
return false;
}
通常通过父视图的onInterceptTouchEvent
方法来完成此操作。onInterceptTouchEvent
有机会在视图的子项之前看到任何触摸事件。如果onInterceptTouchEvent
返回true
,则以前处理触摸事件的子视图会收到一个ACTION_CANCEL
,然后从该点开始的事件将发送到父级的onTouchEvent
方法中进行常规处理。当false
事件沿视图层次结构到达其通常的目标时,它也可以返回并监视事件。
您基本上想onInterceptTouchEvent
在检测到猛击的父视图中执行此操作:
ACTION_DOWN
,记录触摸的位置。返回false
。ACTION_MOVE
,检查初始触地位置和当前位置之间的差异。如果超过某个阈值,则(框架将使用ViewConfiguration#getScaledTouchSlop()
或其他适当的值ViewConfiguration
用于此类事情)return true
。onTouchEvent
。拦截后,ListView
将会取消其触摸处理,并且您的列表项上也不会收到不需要的点击事件。ListView
还设置为,一旦用户开始垂直滚动列表,就禁止其父项拦截事件,这意味着如果用户草率地垂直拖动列表,您就不会出现错误的水平翻转。
这就是股票Android Launcher或News and Weather这样的事情如何进行滚动/可敲击内容的并排翻页。
本文向大家介绍如何区分 HTML 和 HTML5?相关面试题,主要包含被问及如何区分 HTML 和 HTML5?时的应答技巧和注意事项,需要的朋友参考一下 1)在文档类型声明上不同: HTML是很长的一段代码,很难记住,而HTML5却只有简简单单的声明,方便记忆。 2)在结构语义上不同: HTML:没有体现结构语义化的标签,通常都是这样来命名的 ,这样表示网站的头部。 HTML5:在语义上却有很大
本文向大家介绍python 如何区分return和yield,包括了python 如何区分return和yield的使用技巧和注意事项,需要的朋友参考一下 一、说明 return一直中,每中语言中其没没有很大差别,就不多说了。(shell语言return的是退出状态,可能差别是比较大的,感兴趣可参见“Linux Shell函数定义与调用”) 最早看到yield应该是哪们语言用来调整什么线程优先级的
问题内容: 我希望根据我的构建触发方式向我的Jenkinsfile添加一个条件阶段。目前,我们的设置是通过以下方式触发的: 分支索引中获取的git repo更改 用户使用用户界面中的“立即构建”按钮手动触发构建。 有什么方法可以运行不同的流水线步骤,具体取决于其中哪些操作触发了构建? 问题答案: 以下代码可以确定用户是否已启动管道或计时器/其他触发器:
求一个nginx如何区分PC和H5和APP的标准配置~~~
最有力的色彩组合是充满刺激的快感和支配的 欲念,但总离不开红色;不管颜色是怎么组合,红 色绝对是少不了的。红色是最终力量来源——强烈、大胆、极端。 力量的色彩组合象征人类最激烈的感情:爱、恨、 情、仇,表现情感的充分发泄。 在广告和展示的时候,有力色彩组合是用来传 达活力、醒目等强烈的讯息,并且总能吸引众人的 目光。 补色色彩组合 原色色彩组合 单色色彩组合 55 7 52 4 68 36 4 7
我有一个类型的参数