回答这可能对他人有帮助.答案将有助于需要拦截触摸事件的库.

如果你不想覆盖dispatchTouchEvent()(Imp,如果你是编程库)方法的活动,那么我们可以使用Window.Callback类.创建您自己的Window.Callback实现作为下面的代码,然后将其设置为从您的活动回调Window对象.

在下面的代码片段中,为您获取的Activity上下文实例做.

//set Window.Callback for getting touch event

final Window win = context.getWindow();

final Window.Callback localCallback = win.getCallback();

win.setCallback(new MyWindowCallback(localCallback));

MyWindowCallback类将为:

您将在MyWindowCallback的dispatchTouchEventMethod()中获取TouchEvent,您可以根据需要使用这些.

import android.annotation.SuppressLint;

import android.util.Log;

import android.view.ActionMode;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.view.accessibility.AccessibilityEvent;

public class MyWindowCallback implements Window.Callback{

Window.Callback localCallback;

public MyWindowCallback(Window.Callback localCallback) {

this.localCallback = localCallback;

}

@Override

public boolean dispatchKeyEvent(KeyEvent event) {

return localCallback.dispatchKeyEvent(event);

}

@SuppressLint("NewApi")

@Override

public boolean dispatchKeyShortcutEvent(KeyEvent event) {

return localCallback.dispatchKeyShortcutEvent(event);

}

@Override

public boolean dispatchTouchEvent(MotionEvent event) {

//YOU WILL GET TOUCH EVENTS HERE>> USE AS required>>

return localCallback.dispatchTouchEvent(event);

}

@Override

public boolean dispatchTrackballEvent(MotionEvent event) {

return localCallback.dispatchTrackballEvent(event);

}

@SuppressLint("NewApi")

@Override

public boolean dispatchGenericMotionEvent(MotionEvent event) {

return localCallback.dispatchGenericMotionEvent(event);

}

@Override

public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {

return localCallback.dispatchPopulateAccessibilityEvent(event);

}

@Override

public View onCreatePanelView(int featureId) {

return localCallback.onCreatePanelView(featureId);

}

@Override

public boolean onCreatePanelMenu(int featureId,Menu menu) {

return localCallback.onCreatePanelMenu(featureId,menu);

}

@Override

public boolean onPreparePanel(int featureId,View view,Menu menu) {

boolean ret = localCallback.onPreparePanel(featureId,view,menu);

return ret;

}

@Override

public boolean onMenuOpened(int featureId,Menu menu) {

return localCallback.onMenuOpened(featureId,menu);

}

@Override

public boolean onMenuItemSelected(int featureId,MenuItem item) {

return localCallback.onMenuItemSelected(featureId,item);

}

@Override

public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) {

localCallback.onWindowAttributesChanged(attrs);

}

@Override

public void onContentChanged() {

localCallback.onContentChanged();

}

@Override

public void onWindowFocusChanged(boolean hasFocus) {

Log.d("","ttest onfocus changed called");

localCallback.onWindowFocusChanged(hasFocus);

}

@Override

public void onAttachedToWindow() {

localCallback.onAttachedToWindow();

}

@Override

public void onDetachedFromWindow() {

localCallback.onDetachedFromWindow();

}

@Override

public void onPanelClosed(int featureId,Menu menu) {

localCallback.onPanelClosed(featureId,menu);

}

@Override

public boolean onSearchRequested() {

return localCallback.onSearchRequested();

}

@SuppressLint("NewApi")

@Override

public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) {

return localCallback.onWindowStartingActionMode(callback);

}

@SuppressLint("NewApi")

@Override

public void onActionModeStarted(ActionMode mode) {

localCallback.onActionModeStarted(mode);

}

@SuppressLint("NewApi")

@Override

public void onActionModeFinished(ActionMode mode) {

localCallback.onActionModeFinished(mode);

}

}

android dispatchtouchevent 用法,android – 检测每个触摸事件,而不会覆盖dispatchTouchEvent()?...相关推荐

  1. iphone 检测屏幕触摸事件

    原博客 : http://www.yifeiyang.net/iphone-developer-advanced-8-touch-screen-test-event/ iPhone开发进阶(8)--- ...

  2. Android Studio笔记4.2 安卓触摸事件

    文章目录 一.前言 二.笔记4.2 安卓触摸事件 (一)安卓触摸事件概述 1.触摸分类 (1).单点触摸 (2).多点触摸 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 6.安卓触摸 ...

  3. Android Studio 笔记4.2 安卓触摸事件

    文章目录 一.前言 二.笔记4.2 安卓触摸事件 (一)安卓触摸事件概述 1.触摸分类 (1).单点触摸 (2).多点触摸 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 6.安卓触摸 ...

  4. 04 Android 植物人大战僵尸-卡片的触摸事件

    1. 第一层触摸事件-Activty public class MainActivity extends Activity {@Overridepublic boolean onTouchEvent( ...

  5. android layoutinflater用法,Android LayoutInflater的用法详解

    相信我们在开发过程中肯定接触过LayoutInflater,比如ListView的适配器里的getView方法里通过LayoutInflater.from(Context).inflater来加载xm ...

  6. android surface用法,Android SurfaceView的基本使用

    一.为什么要SurfaceView 大多数情况下我们的自定义View都会选择去继承View或ViewGroup来实现,但是为什么系统还要为我们提供一个SurfaceView呢? 首先我们知道View类 ...

  7. android weakreference 用法,Android WeakReference的理解与使用

    前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak refere ...

  8. Android之Android触摸事件传递机制

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53431274 本文出自:[顾林海的博客] ##前言 关于Android ...

  9. Android 触摸事件机制(三) View中触摸事件详解

    本文将对View中触摸事件相关的内容进行介绍.重点介绍的是dispatchTouchEvent(), onTouchEvent()这两个API以及OnTouchListener接口. 注意:本文是基于 ...

最新文章

  1. Atlas Cool Application
  2. 经济危机下企业倒闭的真相
  3. 李宏毅线性代数笔记4:向量
  4. GraphViz:2 DOT语法和相关应用
  5. 【spring boot】【thymeleaf】SPEL调用静态方法和静态属性
  6. 文本框输入限制【不允许空格、只允许数字】
  7. asp.net core AuthenticationMiddleware 在WebApi中的的使用
  8. java获取操作系统信息
  9. python_day12_html
  10. Pandas数据类型及操作
  11. windowsCE镜像文件结构
  12. 2017.8.16 喵星球上的点名 思考记录
  13. Docker Hello World
  14. Java中用三种方法输出字符串_java中两个字符串连接的三种方法
  15. bigdecimal乘法_Java面试题之BigDecimal比较大小问题
  16. 【t098】符文之语
  17. vue.js 首屏优化
  18. ITIL 4和DevOps的关系?
  19. ctworklist php开发,DICOM worklist工作原理
  20. Java工具类 BeanUtils库介绍以及对象拷贝

热门文章

  1. jQuery 表格插件
  2. DIRECTORY_SEPARATOR 和 PATH_SEPARATOR
  3. 使用osql.exe, 将Select的内容保存为文件
  4. 计算Gaunt积分 m1m2<0
  5. 8.1 A Bayesian Methodology for Systemic Risk Assessment in Financial Networks(1)
  6. linux 虚拟仪器,linux平台下编写虚拟仪器系统设计
  7. 【UWB】公式推导计算坐标值
  8. 【Matlab 控制】模仿绘制动态图像 保存动态图 GIF
  9. PyTorch 实现经典模型4:GoogLeNet
  10. uboot中的中断macro宏