- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个覆盖了 onInterceptTouchEvent() 的自定义 ViewGroup。它收到 ACTION_DOWN 但从未收到 ACTION_MOVE。据我了解,除非它返回“true”,否则它应该接收所有 MotionEvents。
ViewGroup 包含两个 View ,一个 ImageView 和一个 GridLayout。
我的拦截代码是:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
logD ("DDV Intercept DOWN");
break;
case MotionEvent.ACTION_POINTER_DOWN:
logD ("DDV Intercept P DOWN"); // logD: shell around Log.d()
break;
case MotionEvent.ACTION_MOVE:
logD ("DDV Intercept MOVE");
break;
case MotionEvent.ACTION_UP:
logD ("DDV Intercept UP");
break;
case MotionEvent.ACTION_POINTER_UP:
logD ("DDV Intercept P UP " + ev.getActionIndex());
break;
case MotionEvent.ACTION_CANCEL:
logD ("DDV Intercept CANCEL");
break;
default:
logD ("DDV Intercept " + (action & MotionEvent.ACTION_MASK));
}
return false;
}
除了 ACTION_MOVE 中的一种情况外,我还有返回 false 的 onTouch 代码;但是,它仅在调用 ACTION_DOWN 时调用;因此它只返回 false。
最佳答案
比这要复杂一点。首先,您需要覆盖 onTouchEvent()
并在那里处理 ACTION_DOWN
和 MOVE
事件。然后会发生以下情况。
ACTION_DOWN
事件首先被分派(dispatch)到 onInterceptTouchEvent()
。您应该从那里返回 false
。ACTION_DONW
事件的位置下没有可触摸 View ,则 ACTION_DOWN
事件和所有后续事件将被分派(dispatch)到 onTouchEvent()
。您必须从那里返回 true
。只有这样,您才会收到发送到 onTouchEvent()
方法的后续事件。无论您返回 true
还是 false
,onInterceptTouchEvent()
都不会再收到任何后续事件。onInterceptTouchEvent()
(包括ACTION_MOVE
事件)。在检测到您的手势后,您需要从那里返回 true
。从此处返回 true
后,可触摸 View 将收到 ACTION_CANCEL
事件,所有其他事件都将分派(dispatch)给 onTouchEvent()
方法。希望这对您有所帮助。
关于android - onInterceptTouchEvent 从不接收 action_move,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725102/
我希望我的 ViewPager 仅在使用单指时滑动。所以我扩展了类并像这样实现了 onInterceptTouchEvent: @Override public boolean onIntercept
我有一个顶级 ViewGroup,我称之为 SliderView,我想在其中检测滑动。这主要是可行的,但仍然存在一个奇怪的故障。 SliderView 的本质是覆盖 onInterceptTouchE
在我的代码中,我使用预先确定的 XML 布局在我的 Activity 中生成 View 。我没有以编程方式创建它们,因此我找不到覆盖 onInterceptTouchEvent 方法的方法!有办法做到
抱歉,如果这含糊不清,但有人可以给我一个何时使用 onInterceptTouchEvent() 的例子吗? 我理解这个概念,在父 ViewGroup 中拦截 subview 触摸,但我为什么需要这样
我问这个相当复杂的问题,希望能从您那里得到一些想法。 事情是这样的:我创建了一个自定义 ListView 类,上面那个: public class FolderListView extends Lis
如何在 ListView 中实现自定义 onInterceptTouchEvent(),将滚动优先级分配给 ListView 的子级并尽快当他们滚动时,将其返回给 ListView ?我想优先考虑内部
我有一个覆盖了 onInterceptTouchEvent() 的自定义 ViewGroup。它收到 ACTION_DOWN 但从未收到 ACTION_MOVE。据我了解,除非它返回“true”,否则
为什么ViewGroup的onInterceptTouchEvent只得到ACTION_DOWN?根据文档,只要返回 false,它就应该接收所有事件类型。 http://developer.andr
我有一个带有 View 的 fragment ,其中包含一些可点击的元素(ToggleButtons 和一个 GridView)。 我在 View 上设置了一个 onTouchListener,我用它
我的布局看起来像这样: 我使用了一个包含 llMain 和 scroll 的 RelativeLayout。在 llMain 中,我有另外两个 LinearLayouts:ll1 和 ll2。每个 L
我希望能够在屏幕上的任意位置滑动来调用某个函数。但我在 Linear Layouts 中也有 Buttons,我希望能够点击它们。如果我在 Button 上滑动,我希望 onInterceptTouc
sdk 说: 3、For as long as you return false from this function, each following event (up to and includi
我确实扩展了 NestedScrollView 和 @Override 它的方法:onTouchEvent 和 onInterceptTouchEvent。问题是 super.onTouchEvent
我正在构建一个漫画/日本漫画应用程序,它有一个包含 viewpager 的 Activity 以显示每章中的图像。我希望 ViewPager 在用户在第一页/最后一页滑出边界时开始新的章节。为此,我通
Android中的onInterceptTouchEvent和dispatchTouchEvent有什么区别? 根据android开发者指南,这两种方法都可以用来拦截一个触摸事件(MotionEven
我一直在寻找,但我仍然没有找到任何东西。我试过了 View child = mirecycler.findChildViewUnder(e.getX(), and.getY()); 在我的例子中,它
日志从不记录ACTION_UP 或ACTION_MOVE(我从代码示例中删除以缩短) 这是我的代码的简化版本: public class ProfileBadgeView extends Linea
我有父 View v extends 线性布局。子项一是 LinearLayout,子项二是 ScrollView。 我想让 MyParent View 拦截垂直 MotionEvent.ACTION
我注意到该函数在 Action_down 之后没有中断,然后代码可以运行到 ACTION_MOVE,对吗? @Override public boolean onInterceptTouchEvent
我扩展了 ViewGroup 以创建自定义 View 。 在触摸事件中,当我的第二根手指触摸屏幕时,onInterceptTouchEvent 方法中未检测到 MotionEvent.ACTION_P
我是一名优秀的程序员,十分优秀!