android dispatchtouchevent 用法,android – 检测每个触摸事件,而不会覆盖dispatchTouchEvent()?...
回答这可能对他人有帮助.答案将有助于需要拦截触摸事件的库.
如果你不想覆盖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()?...相关推荐
- iphone 检测屏幕触摸事件
原博客 : http://www.yifeiyang.net/iphone-developer-advanced-8-touch-screen-test-event/ iPhone开发进阶(8)--- ...
- Android Studio笔记4.2 安卓触摸事件
文章目录 一.前言 二.笔记4.2 安卓触摸事件 (一)安卓触摸事件概述 1.触摸分类 (1).单点触摸 (2).多点触摸 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 6.安卓触摸 ...
- Android Studio 笔记4.2 安卓触摸事件
文章目录 一.前言 二.笔记4.2 安卓触摸事件 (一)安卓触摸事件概述 1.触摸分类 (1).单点触摸 (2).多点触摸 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 6.安卓触摸 ...
- 04 Android 植物人大战僵尸-卡片的触摸事件
1. 第一层触摸事件-Activty public class MainActivity extends Activity {@Overridepublic boolean onTouchEvent( ...
- android layoutinflater用法,Android LayoutInflater的用法详解
相信我们在开发过程中肯定接触过LayoutInflater,比如ListView的适配器里的getView方法里通过LayoutInflater.from(Context).inflater来加载xm ...
- android surface用法,Android SurfaceView的基本使用
一.为什么要SurfaceView 大多数情况下我们的自定义View都会选择去继承View或ViewGroup来实现,但是为什么系统还要为我们提供一个SurfaceView呢? 首先我们知道View类 ...
- android weakreference 用法,Android WeakReference的理解与使用
前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak refere ...
- Android之Android触摸事件传递机制
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53431274 本文出自:[顾林海的博客] ##前言 关于Android ...
- Android 触摸事件机制(三) View中触摸事件详解
本文将对View中触摸事件相关的内容进行介绍.重点介绍的是dispatchTouchEvent(), onTouchEvent()这两个API以及OnTouchListener接口. 注意:本文是基于 ...
最新文章
- Atlas Cool Application
- 经济危机下企业倒闭的真相
- 李宏毅线性代数笔记4:向量
- GraphViz:2 DOT语法和相关应用
- 【spring boot】【thymeleaf】SPEL调用静态方法和静态属性
- 文本框输入限制【不允许空格、只允许数字】
- asp.net core AuthenticationMiddleware 在WebApi中的的使用
- java获取操作系统信息
- python_day12_html
- Pandas数据类型及操作
- windowsCE镜像文件结构
- 2017.8.16 喵星球上的点名 思考记录
- Docker Hello World
- Java中用三种方法输出字符串_java中两个字符串连接的三种方法
- bigdecimal乘法_Java面试题之BigDecimal比较大小问题
- 【t098】符文之语
- vue.js 首屏优化
- ITIL 4和DevOps的关系?
- ctworklist php开发,DICOM worklist工作原理
- Java工具类 BeanUtils库介绍以及对象拷贝
热门文章
- jQuery 表格插件
- DIRECTORY_SEPARATOR 和 PATH_SEPARATOR
- 使用osql.exe, 将Select的内容保存为文件
- 计算Gaunt积分 m1m2<0
- 8.1 A Bayesian Methodology for Systemic Risk Assessment in Financial Networks(1)
- linux 虚拟仪器,linux平台下编写虚拟仪器系统设计
- 【UWB】公式推导计算坐标值
- 【Matlab 控制】模仿绘制动态图像 保存动态图 GIF
- PyTorch 实现经典模型4:GoogLeNet
- uboot中的中断macro宏