zoukankan      html  css  js  c++  java
  • 关于android 双击事件

    转:http://www.cnblogs.com/tianjian/archive/2011/12/15/2289143.html

    大家好,关于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的一些功能的

  • 相关阅读:
    JavaScript中需要注意的几个问题
    前端编码规范之JavaScript
    那些年,我们一起玩过的响应式布局
    前端编码规范之CSS
    一个不陌生的JS效果-marquee,用css3来实现
    解读jQuery中extend函数
    字体大小自适应纯css解决方案
    浅谈叶小钗面试的几个问题
    【Python开发】C和Python之间的接口实现
    【Python开发】【编程开发】各种系统的清屏操作命令
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/4230452.html
Copyright © 2011-2022 走看看