大家好,关于android双击事件 我相信大家都知道 API中是有个方法的,但是必须在Activity中在能使用。

对于到底用不用android 双击事件API各有各的看法。

在Activity中使用API

优点:省时省力,别人写的东西,直接用就行了,不担心有BUG

缺点:代码写在activity中 总感觉有些乱。

自己写个onDoubleClick方法

优点:自己写的东西,好控制,灵活性强,想放哪放哪。

缺点:需要消耗点时间,检查BUG之类的。

好了,最近我也遇到了需要处理双击事件的问题,我是这样处理的

我用了android的API 但是我也很好整理。

上代码吧,只有2个类 一个当然是Activity 另一个就是OnDoubleClick事件处理类

 
 1 import android.app.Activity;
2 import android.os.Bundle;
3 import android.view.GestureDetector;
4 import android.view.MotionEvent;
5 import android.view.View.OnTouchListener;
6
7 /**
8 *
9 * <p>class instruction:内部界面 核心Activity</p>
10 * create in 2011-12-2 @author Mercury
11 */
12 public class GameActivity extends Activity {
13 GameActivityHelper helper;
14 private GestureDetector gd;
15 @Override
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 helper=new GameActivityHelper(this);
19 helper.init();
20 setContentView(helper.getGameView());
21 gd=new GestureDetector(this,new OnDoubleClick());
22 }
23 @Override
24 public boolean onTouchEvent(MotionEvent event) {
25 return gd.onTouchEvent(event);
26 }
27 }
 
 1 import android.view.GestureDetector;
2 import android.view.MotionEvent;
3
4 public class OnDoubleClick extends GestureDetector.SimpleOnGestureListener{
5 @Override
6 public boolean onDoubleTap(MotionEvent e) {
7 //TODO
8 return false;
9 }
10 // @Override
11 // public boolean onDoubleTapEvent(MotionEvent e) {
12 // return super.onDoubleTapEvent(e);
13 // }
14 }
 

代码也还算整洁。 API中对于双击有两种处理,

一种是双击后执行一次:onDoubleTap

一种是双击后执行两次:onDoubleTapEvent

这里我只需要双击后执行一次就行了,那里注释掉了

还有需要特别注意的是在自己的Activity中重写的父类Activity的方法

@Override public boolean onTouchEvent(MotionEvent event) {   return gd.onTouchEvent(event); } 这个方法。我在网上看到有很多人在Activity中 实现implements OnTouchListener 后会要求你重写onTouch方法来实现双击。

这完全是误导人的做法,本人亲自试过,双击是无效的,普通的点击还是有效 我是在SDK1.6版本中试的

这是个细节希望大家多注意下。

这里的onTouchEvent 是Activity中的方法,而不是实现某个接口而来的,这就是为什么只能在Activity中处理双击事件的原因,

如果你需要用androidAPI处理双击事件就必须重写Activity中的onTouchEvent 方法 否则与GestureDetector中有关的方法都无效

onTouch 只要实现了OnTouchListener接口的View或者Activity都必须重写的方法,他是不能实现GestureDetector的一些功能的

关于android 双击事件的更多相关文章

  1. Android中实现双击事件

    需求:需要给一个view实现双击效果,查看了api,发现没有api可以调用, 于是从网上参考了一段代码. xml布局文件: <RelativeLayout xmlns:android=" ...

  2. Android 自定义View实现单击和双击事件

    自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面 ...

  3. Android实现双击事件的两种方式

    Work around的方法是先监听onTouch事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: ...

  4. Android 通过onTouchEvent判断是否为双击事件

    通过onTouchEvent判断是否为双击事件,通过前面一次up 跟本次down之间的时间差,并且点击的点的坐标偏移来确定是否为双击事件DOUBLE_TAP_TIMEOUT. boolean isMo ...

  5. andorid 中如何实现双击事件

    项目需求: android中只有单击和其他事件,其实都是由OnTouch事件演变而来:最近有项目要求双击全屏,所以就试着实现了下 具体实现如下: 1.MainActivity.java实现: publ ...

  6. android 双击图片变大,缩放功能

    package com.example.administrator.myapplicationphotochange; /** * Created by Administrator on 2016/8 ...

  7. Android的事件分发

    1. Touch事件和绘制事件的异同之处 Touch事件和绘制事件非常相似,都是由ViewRoot派发下来的,可是不同之处在绘制事件是由应用中的某个View发起请求,一层一层上传到ViewRoot.再 ...

  8. [前端][自定义DOM事件]不使用setTimeout实现双击事件或n击事件

    使用setTimeout实现双击事件 例如,这样: let div = document.getElementById("div"); doubleClick(div, funct ...

  9. GridView/DataGrid行单击和双击事件实现代码_.Net教程

    功能: 单击选中行,双击打开详细页面 说明:单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间 ;当双击时,通过全局变量 dbl_click 来取消单击事件的响应  ...

随机推荐

  1. Ring3下干净的强行删除文件

    在某公司实习完,再次回到寝室.还是在学校好. 实习期间的给我的任务就是为项目添加一个强行删除的模块. 背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除. ...

  2. git ssh认证

    一般新手用git时,使用HTTPS都需要输入用户名和密码,这是一个很低效的开发过程.(虽然有时可以让开发人员减少push的次数).github提供了几种连接方式,其中以https:开头的代表https ...

  3. poj1663---纯粹找规律

    #include <stdio.h> #include <stdlib.h> int main() { int n; scanf("%d",&n); ...

  4. Servlet的运行方式

    通常我们运行servlet需要在web.xml配置文件中,注册我们写好的servlet以及其对应的访问路径. 在学习web开发中,有一种不需要配置便可以直接对servlet进行配置的方式,在web.x ...

  5. findOneAndUpdate的用法详解

    Fragment.findOneAndUpdate({_id:id}, {$set: datas}, {upsert:true, 'new':true}).populate('ads').exec(f ...

  6. Eclipse无法识别(手机)设备的解决方案

    遇到问题 开始学习android一个多月了,用Eclipse开发,用android手机调试.之前一直好好的,突然Eclipse无法识别手机设备了.纠结了好久,找了各种解决方法,弄了一晚上终于解决问题了 ...

  7. PHP去除Notice警告提示

    最近刚接触PHP,开发过程中可能会遇到Notice: Use of undefined ……这样的警告提示,可能是代码写的不太规范, 有两种解决途径:关闭 PHP 提示的方法, 搜索php.ini:e ...

  8. English - when用法

    一.作为副词,它有以下的用法:  1. 作为疑问副词,引导特殊疑问句,意为“什么时候:何时”.如: ( 1 ) When will they come back?( 2 ) What time wil ...

  9. SQL 递归 可以用于权限查找。迭代自身没有用递归函数。

    昨晚看的书,发现可以用T-SQL 实现自定义递归,其实也就是变相的 foreach 直接上代码 ,不懂得可问: ),col int ) -- id 增量id pid该数据的上级增量id name 名称 ...

  10. MSSQL 当前会话设置隔离级别与查询

    之前因为MySQL没有with(nolock)这种写法,于是想设置隔离级别,结果被坑. 直觉以为和MSSQL一样只要打set transaction isolation level xxx 就能搞定 ...