Android在Fragment中实现监听触摸事件

本文给大家介绍的是监听Fragment的触摸事件实现。如果大家有更好的机制,可以留言交流,下面来看看详细的介绍:

大家都知道,我们的activity中有onTouchEvent方法,可以用来实现触摸事件的监听。

activity的触摸事件

@Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); }

但是对于Fragment,其中却没有这个方法,如果我们在fragment中想要监听触摸事件 该如何实现呢?

我的方法是,自己实现触摸事件的分发。

先定义一个接口

public interface MyOnTouchListener { public boolean onTouch(MotionEvent ev); }

再搞一个list存储listener

private ArrayList<MyOnTouchListener> onTouchListeners = new ArrayList<MyOnTouchListener>( 10);

再自己实现注册,与销毁以及分发

fragment触摸事件分发,将触摸事件分发给每个能够响应的fragment

@Override public boolean dispatchTouchEvent(MotionEvent ev) { for (MyOnTouchListener listener : onTouchListeners) { if(listener != null) { listener.onTouch(ev); } } return super.dispatchTouchEvent(ev); } public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) { onTouchListeners.add(myOnTouchListener); } public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) { onTouchListeners.remove(myOnTouchListener) ; }

那么在fragment中 我们这样使用即可:初始化监听器,然后向activity注册,同时监听器中监听手势动作。

onTouchListener = new MusicActivity.MyOnTouchListener() { @Override public boolean onTouch(MotionEvent ev) { gestureDetector.onTouchEvent(ev); return false; } }; ((MusicActivity) getActivity()).registerMyOnTouchListener(onTouchListener);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

时间: 2024-10-28 11:38:58

Android在Fragment中实现监听触摸事件的相关文章

Android零基础入门第34节:Android中基于监听的事件处理

原文:Android零基础入门第34节:Android中基于监听的事件处理    上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器.     一.使用内部类作为事件监听器       和上面的匿名内部类不同,使用内部类可以在当前类中复用该监听器类:因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件,这也是内部类的两个优势.     接下来通过一个简单的示例程序来学习Andro

系统中实时监听android的网络状态并且给予处理

问题描述 系统中实时监听android的网络状态并且给予处理 比如 在一个android小程序中 发现网络断了就给予页面跳转 解决方案 分几个步骤 1.监测手机上的网络连接状态 2.及时连接网络不一定可达,尝试连接服务器,如果通,则网路通. 解决方案二: 周期性检测网络连接>. 解决方案三: /** * 网络请求失败处理 */ public void requestNetDataFail(ErrorInfo errorInfo) { switch (errorInfo.errorCode) {

Android ListView监听滑动事件的方法(详解)

ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监听事件,可以在监听三个Action事件发生时通过MotionEvent的getX()方法或getY()方法获取到当前触摸的坐标值,来对用户的滑动方向进行判断,并可在不同的Action状态中做出相应的处理 mListView.setOnTouchListener(new View.OnTouchLis

android 编写fragment中

问题描述 android 编写fragment中 一致出现程序很不幸,**运行已经停止的那个弹出框,是什么问题啊? 解决方案 请给出具体的错误信息,最好能附上相应的源代码以方便分析. 解决方案二: 请给出具体的错误信息,最好能附上相应的源代码以方便分析. 解决方案三: anr错误,可能logcat日志,找到你的代码出错行 解决方案四: 调试的错误日志信息是什么 解决方案五: LZ贴出错误日志才能知道错在哪里 解决方案六: 对话框是依靠Activity存在的,是不是你的Activity finis

java中按钮监听以及鼠标监听的使用

我们在进行java的GUI开发的时候,按钮以及鼠标监听的使用无疑是相当最要的,而如何巧妙的运用这些监听器,对今后的开发更是有很大的帮助,下面将分别介绍. 实现按钮监听的方法: 在java.awt.event下面有一个ActionListener的类,它是一个用于接收操作事件的侦听器接口,对处理操作事件感兴趣的就可以去使用这个接口. 首先我们需要写一个类去实现这个接口,然后对我们的JButton对象添加按钮响应,最后再给这个按钮添加监听器,具体代码如下: JButton bu=new JButto

Android:打败system,自己监听Home键

这是一篇关于Home键的Android学习笔记 问题的提出 Android Home键系统负责监听,捕获后系统自动处理.有时候,系统的处理往往不随我们意,想自己处理点击Home后的事件,那怎么办? 问题的解决 先禁止Home键,再在onKeyDown里处理按键值,点击Home键的时候就把程序关闭,或者随你XXOO. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated me

浅析如何在tnsnames.ora中配置监听

以下是对如何在tnsnames.ora中配置监听进行了详细的分析介绍,需要的朋友可以过来参考下   tnsnames.ora所在位置:D:Installedoracleproduct11.1.0db_1NETWORKADMINtnsnames.ora也就是说在product中 只有配置了监听之后才可以登录到数据库中 复制代码 代码如下: TOTO =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 这里是IP地址)(PORT = 1

AngularJS中watch监听用法分析_AngularJS

本文实例讲述了AngularJS中watch监听用法.分享给大家供大家参考,具体如下: ANGULAR 监听使用: 当angular数据模型发生变化时,我们需要如果需要根据他的变化触发其他的事件. $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); watchExpression 需要监控的表达式 listener 处理函数,函数参数如下  function

android在fragment中Toast.makeText不能显示

问题描述 android在fragment中Toast.makeText不能显示 android在fragment中Toast.makeText(getActivity(),"当前网络不可用",Toast.LENGTH_LONG);不显示 解决方案 Toast.makeText(getActivity(),"当前网络不可用",Toast.LENGTH_LONG);该为 Toast.makeText(getActivity(),"当前网络不可用",