Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何拦截所有的触摸事件?

如何拦截所有的触摸事件?
EN

Stack Overflow用户
提问于 2012-11-06 14:17:28
回答 2查看 11K关注 0票数 12

如何获得应用程序的“顶层”View (它包含Activity和所有DialogFragment)?我需要截取所有的触摸事件来处理一些ViewDialogFragment和我的Activity之间的运动。

我试图通过Activity的Window的装饰视图来捕捉它们(事件),但没有成功:

代码语言:javascript
运行
AI代码解释
复制
getWindow().getDecorView().setOnTouchListener(...);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-04 12:01:03

您可以覆盖Activity.dispatchTouchEvent来截获activity中的所有触摸事件,即使您有一些像ScrollView、Button等将使用触摸事件的视图。

结合ViewGroup.requestDisallowInterceptTouchEvent,您可以禁用ViewGroup的触摸事件。例如,如果您想要禁用某些ViewGroup中的所有触摸事件,请尝试执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    requestDisallowInterceptTouchEvent(
            (ViewGroup) findViewById(R.id.topLevelRelativeLayout),
            true
    );
    return super.dispatchTouchEvent(event);
}

private void requestDisallowInterceptTouchEvent(ViewGroup v, boolean disallowIntercept) {
    v.requestDisallowInterceptTouchEvent(disallowIntercept);
    int childCount = v.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View child = v.getChildAt(i);
        if (child instanceof ViewGroup) {
            requestDisallowInterceptTouchEvent((ViewGroup) child, disallowIntercept);
        }
    }
}
票数 23
EN

Stack Overflow用户

发布于 2021-05-21 10:06:57

如果你想知道如何在DialogFragments中拦截所有的触摸事件,你可以这样做:

代码语言:javascript
运行
AI代码解释
复制
abstract class BaseDialogFragment : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return object : Dialog(requireContext()){
            override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
                // do your thing here
                return super.dispatchTouchEvent(ev)
            }
        }
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13252904

复制
相关文章
Android 触摸事件分发和拦截机制
Android 开发中,很多情况下,我们需要对触摸事件进行处理,但是当面对错综复杂的 Android 布局时,我们如何准确的将一个用户的触摸事件传递到对应的控件中并让它进行处理呢?
指点
2019/01/18
1K0
Android 触摸事件分发和拦截机制
Android触摸事件_wpf触摸屏点击事件
这些方法都是View类的,所以像TextView这样看似不是按钮的组件也可以使用这些监听。
全栈程序员站长
2022/09/30
2.2K0
touchesBegan 触摸事件
1、在用户使用App过程中,会产生各种各样的事件,iOS中的事件可以分为3大类型:
全栈程序员站长
2022/09/15
8880
WPF 从触摸消息转触摸事件
在 WPF 程序可能因为一些坑让程序触摸失效,如果此时还可以收到系统的触摸消息,那么可以通过从触摸消息转触摸事件解决程序触摸失效但不适合所有触摸失效程序
林德熙
2020/07/07
1.3K0
WPF 触摸到事件
在 WPF 界面框架核心就是交互和渲染,触摸是交互的一部分。在 WPF 是需要使用多个线程来做触摸和渲染,触摸是单独一个线程,这个线程就是只获得触摸,而将触摸转路由是在主线程。
林德熙
2018/09/19
1.3K0
WPF 触摸到事件
Android触摸事件机制
本篇为梦痕投稿,不可错过的干货哟 前言 随着科学技术的发展,智能手机早已成为我们当代人身边必不可少的“伙伴”之一,堪比对象女友。每天我们对着手机重复的做着点击、滑动操作,而手机则随着我们的操作给我们展示她的精彩。 … 废话到此结束。 看到这里,即使不是作为移动端码农的你也应该知道触摸事件对手机(经典键盘机除外)的重要性了。 什么是触摸事件 顾名思义,就是触摸手机屏幕后产生的事件。这时候请你拿出手机,点击屏幕中的某个按钮(不要松手),移动一段距离,松手。 这个过程一般会产生如下几个事件: 点击(Down)事
巫山老妖
2018/07/20
7550
CreatorPrimer|触摸事件冒泡
前两天正在愁公众号写点什么,打开微信看到uikiller用户「悦雨」遇到了一个问题:
张晓衡
2019/09/11
1.4K0
CreatorPrimer|触摸事件冒泡
Flutter触摸事件原理
Flutter 触摸事件的处理点在 GestureBinding中。在 GestureBinding 中存在一个 handlerPointerEvent方法,这个方法就是触摸事件在 Flutter 侧的触发点。
烧麦程
2022/05/10
1.4K0
Flutter触摸事件原理
为精灵添加触摸事件
  这可能是游戏中最普通的场景了:点击某个精灵,触发此精灵的一系列动作。比如:精灵是一块石头,触摸石头后,让石头从A点移动到B点。
古时的风筝
2022/05/11
6070
Cocos Creator 触摸事件穿透
假设给整个Canvas添加了事件监听。用网页模拟时,鼠标移动,点击子node都会监听到。
AnRFDev
2021/02/01
1.7K0
Android触摸事件传递(上)
    前言:智能手机早已成为我们今天身边必不可少的手持设备,iOS和Android也是目前主流的二大移动操作系统,当然也有越来越多的开发者加入到移动开发的工作中来。我也是一名普通的Android码农,目前也在学习iOS开发中,有一些成长道路上的一些经验和教训,很早就想动手记录下来,再三下决心,终鼓起勇气,敲起键盘,有了下文,初次行文,文笔未免羞涩,大神轻点喷~
三好码农
2018/09/11
1.2K0
Android触摸事件传递(上)
触摸事件 touchstart、touchmove、touchend
1、HTML5 中, PC 端基于鼠标的界面互动主要是单击, 移动端界面交互方式主要是触摸。
全栈程序员站长
2022/09/06
1.8K0
触摸事件 touchstart、touchmove、touchend
Android触摸事件传递(下)
  上一篇中,我说明了Android中Activity和View触摸事件的传递流程,现在我们来继续学习MotionEvent在View的容器ViewGroup中的传递过程。
三好码农
2018/09/11
1.1K0
Android触摸事件传递(下)
Android触摸事件_android设置按钮点击事件
在Android系统中,手势的识别是通过 .OnGestureListener接口来实现的,利用,摸屏的Fling、Scroll等方法可以进行滑动或翻页效果的实现;触摸屏相关的事件,是通过onTouchListener来实现的。
全栈程序员站长
2022/10/04
3.4K0
Android触摸事件实现笔触画布
任何View都有触摸事件,经常在自定义控件时重写setOnTouchListener 本篇通过手绘图片来讲述这个知识点 本篇分为三个等级:一览图: 直线 曲线 笔触 LEVEL1.png LEVEL2.png LEVER3.png ---- LEVEL1:基础实现 在Activity中通过一个全屏的Bitmap创建的Canvas绘制 为ImageView添加触摸事件监听。 1.成员变量 ImageView mIdIvShow; float downX = 0; float downY =
张风捷特烈
2018/12/06
1K0
IOS触摸事件分发机制详解
本文主要介绍了iOS事件传递机制,包括Touch Event、Mouse Event和Gesture Event。首先介绍了事件传递的整个流程,然后重点讲解了Touch Event、Mouse Event和Gesture Event的传递流程和区别。最后列举了一些常见应用解决方案,如扩大按钮点击区域、子视图消息传递给父视图等。
MelonTeam
2018/01/04
3.6K4
IOS触摸事件分发机制详解
iOS Programming – 触摸事件处理(2)
iOS Programming – 触摸事件处理(2) 在上一篇《iOS Programming – 触摸事件处理(1)》中了解触摸、事件和响应者之后,接下去学习如何处理用户的触摸事件。首先触摸的对象是视图,而视图的类UIView继承了UIRespnder类,但是要对事件作出处理,还需要重写UIResponder类中定义的事件处理函数。根据不通的触摸状态,程序会调用相应的处理函数,这些函数包括以下几个:             -(void)touchesBegan:(NSSet *)touches wi
猿人谷
2018/01/17
9590
android触摸屏事件,Android Touch事件分析
本文将分析Touch事件的传递。很多复杂的功能都需要深刻的处理Touch事件,例如侧边栏,例如图标的拖动换位。
全栈程序员站长
2022/10/02
1.5K0
android触摸屏事件,Android Touch事件分析
点击加载更多

相似问题

如何停止拦截触摸事件?

10

拦截触摸事件SlidingPaneLayout

24

触摸事件拦截和路由

16

Drawerlayout正在拦截所有触摸事件

20

如何有条件地拦截触摸事件?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档