zoukankan      html  css  js  c++  java
  • 关于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 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的一些功能的

  • 相关阅读:
    NanoProfiler
    NanoProfiler
    Open Source Cassandra Gitbook for Developer
    Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
    Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
    Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
    Android Fragment使用(一) 基础篇 温故知新
    Set up Github Pages with Hexo, migrating from Jekyll
    EventBus源码解析 源码阅读记录
    Android M Permission 运行时权限 学习笔记
  • 原文地址:https://www.cnblogs.com/tianjian/p/2289143.html
Copyright © 2011-2022 走看看