关于android 双击事件


大家好,关于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 Mercury11  */12 public class GameActivity extends  Activity {13     GameActivityHelper helper;14     private GestureDetector gd;15     @Override16     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      @Override24     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 //    @Override11 //    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的一些功能的

更多相关文章

  1. Android智能指针使用方法介绍
  2. 编写高效的Android代码
  3. Android 测试代码编写小技巧 - UI 和 单元测试间共享代码
  4. Android触屏事件和MotionEvent介绍
  5. [Android] ListView (普通列表控件) 的基本使用方法
  6. Github项目解析(二)-->将Android项目发布至JCenter代码库
  7. Android事件分发机制及如何解决事件冲突
  8. android优化 清除无效代码 UCDetector

随机推荐

  1. android中下载文件到sdcard和进度条小结
  2. 在Android中,px,dp,dip,sp的不同之处
  3. android ndk log
  4. android 系统开发之开机动画
  5. 性能优化之Java(Android)代码优化
  6. Android多分辨率适配框架(2)— 原理剖析
  7. Android节拍器
  8. Android(安卓)UI布局之RelativeLayout
  9. GridView--学习
  10. Android(安卓)第七课——UI布局