`
wwwjiandan
  • 浏览: 28613 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何实现自定义View中的双击事件

 
阅读更多
自定义View想要实现对双击事件的监听,必须实现android.view.GestureDetector.OnGestureListener接口,具体实现代码如下:

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.LinearLayout;
import android.widget.TextView;

public class touchGesture extends Activity implements OnGestureListener {      
  private LinearLayout main;      
  private TextView viewA;
  private GestureDetector gestureScanner;

  @Override 
  public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  

    gestureScanner = new GestureDetector(this);  
    gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){ 
      public boolean onDoubleTap(MotionEvent e) { 
        viewA.setText("-" + "onDoubleTap" + "-"); 
        //双击时产生一次
        Log.v("test", "onDoubleTap");
        return false; 
      }
      public boolean onDoubleTapEvent(MotionEvent e) { 
        //双击时产生两次
        Log.v("test", "onDoubleTapEvent");
        return false;
      } 
      public boolean onSingleTapConfirmed(MotionEvent e) { 
        viewA.setText("-" + "onSingleTapConfirmed" + "-"); 
        //短快的点击算一次单击
        Log.v("test", "onSingleTapConfirmed");
        return false; 
      } 
    });


    main = new LinearLayout(this);  
    main.setBackgroundColor(Color.GRAY);
    main.setLayoutParams(new LinearLayout.LayoutParams(320,480));
    main.setOrientation(LinearLayout.VERTICAL);

    viewA = new TextView(this);
    viewA.setBackgroundColor(Color.YELLOW);
    viewA.setTextColor(Color.BLACK);  
    viewA.setTextSize(16);
    viewA.setLayoutParams(new LinearLayout.LayoutParams(320,50));  
    main.addView(viewA);

    setContentView(main);  
  }

  @Override 
  public boolean onTouchEvent(MotionEvent me) {  
    return gestureScanner.onTouchEvent(me);  
  }  

  @Override 
  public boolean onDown(MotionEvent e) {  
    //viewA.setText("-" + "DOWN" + "-");  
    return true;  
  }  

  @Override 
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  
    //viewA.setText("-" + "FLING" + "- "+velocityX + "- "+velocityY);  
    Log.v("test", "onFling "+e1.getX()+" "+e2.getX());
    return true;  
  }  

  @Override 
  public void onLongPress(MotionEvent e) {  
    //viewA.setText("-" + "LONG PRESS" + "-");  
  }  

  @Override 
  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {  
    //viewA.setText("-" + "SCROLL" + "- "+distanceX + "- "+distanceY);  
    Log.v("test", "onScroll "+e1.getX()+" "+e2.getX());
    return true;  
  }  

  @Override 
  public void onShowPress(MotionEvent e) {  
    //viewA.setText("-" + "SHOW PRESS" + "-");  
  }

  @Override 
  public boolean onSingleTapUp(MotionEvent e) {  
    Log.v("test", "onSingleTapUp");
    //viewA.setText("-" + "SINGLE TAP UP" + "-"+ i++);  
    return true;  
  }  
 
}  
分享到:
评论

相关推荐

    Android 自定义View实现单击和双击事件的方法

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

    Android自定义view,实现多画面播放器

    Android自定义view,实现多画面播放器,可以通过设置参数来设置画面个数,双击某个画面可以全屏显示这个画面,并暂停其他画面的播放,可以通过左滑或右滑来播放上一个或下一个视频

    bootstrap-treeview自定义双击事件实现方法

    但是不知为什么这个插件没有自带双击事件。 经过多次测试,使用方法$(‘#tree’).dblclick( function () {})和方法$(‘#tree’).on(‘dblclick’,function(){})都不起作用!百思不得其解。最后救助大神,问题解决了...

    Android中View位置和触摸事件详解

    本文Demo都是在自定义View中进行的,文末有下载链接 View的位置参数 MotionEvent屏幕触摸事件 GestureDetector手势检测(单击,双击,长摁,滑动) 二、View的位置参数 1、原始位置(不受偏移量影响,单位是...

    基于ImageView的多点触控,双击放大缩小以及结合ViewPager的事件冲突

    本文通过一个自定义控件ZoomImageView,实现多点触控(移动,多点缩放),双击放大缩小,并在放大缩小过程自解决边界白边的情况,同时结合ViewPager的使用,并解决存在的事件冲突情况。

    自定义多指缩放图片视图效果.zip

    效果图说明:功能展示图中的效果是Double Image(With delayed load)项的效果,里面有两张图,其中下面一张图会延迟出现,默认图片为原始大小,可通过多指缩放或者快速双击实现放大或缩小 。  

    swift-自定义了一个图片浏览器支持单击消失

    自定义了一个图片浏览器,支持单击消失,双击放大,下拉隐藏,双指放大等功能,支持自定义view配置UI。

    ExView.exe

    首先从网络中下载得到Exview外力工具的安装程序,并按照默认设置将其正确安装到本地工作站系统中,待安装操作完毕后再双击系统桌面上的Exview快捷控制图标,进入该程序的主操作界面; 在该主操作界面中单击“选项...

    Android Studio实现飞机大战,95分安卓程序设计,计科必学!

    通过自定义View实现Android飞机大战小游戏,游戏玩法很简单,可以锻炼玩家的反应能力。开启背景音乐进行新的游戏,控制飞机移动来消灭敌机获取更多的分数,在移动过程中避免与敌机发生碰撞。主界面可以查看自己的...

    贝壳单词APP

    xml 构建优美的 UI, 自定义 View, 自定义 style / theme, 双击返回退出, 持久化 Service,Service 与 Activity 的通讯, 设置页面, 分享, Android 命名规范, 相对来说优雅的代码, Android Studio 以及 ...

    贝壳单词完整app

    用 xml 构建优美的 UI, 自定义 View, 自定义 style / theme, 双击返回退出, 持久化 Service,Service 与 Activity 的通讯, 设置页面, 分享, Android 命名规范, 相对来说优雅的代码, Android Studio 以及 ...

    Spring schedule定时任务前台界面配置源代码 v1.1-可直接打开看效果-附CURD集成说明

    界面采用bootstrap和JEasyUI技术实现,提供三种任务运行规则:一次性、周期性、自定义 1、一次性(i:立即运行;ii:在规定的时间刻运行) 2、周期性(i:按小时;ii:按天 iii:按周; iv:按月(日);v: 按月(星期) ...

    IOS开发之手势响应事件优先级的实例详解

    交互响应事件都是通过手势的操作完成的,如点击、或双击、或长按,这些交互都是在视图中完成的,但是不同的视图可能会有不同的交互,有时候就会出现交互响应事件冲突的情况。这时候就需要处理事件优先级,以便达到想...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--自定义view的属性 |--自定义下拉刷新ListView |--自定义动画资源 |--自定义常用小控件 |--自定义控件之小技巧 |--自定义控件风格和全局背景 |--自定义组合控件 |--自定义配置文件资源 |--自定义颜色状态选择资源 ...

    自定义多指缩放图片视图效果

    自定义多指缩放图片视图效果...效果图说明:功能展示图中的效果是Double Image(With delayed load)项的效果,里面有两张图,其中下面一张图会延迟出现,默认图片为原始大小,可通过多指缩放或者快速双击实现放大或缩小

    Android代码-自定义缩放Recyclerview。

    1、双击,RecyclerView整体放大缩小 2、两个手指手势,RecyclerView整体放大缩小 3、启用和禁用整体缩放 原理 CSDN Preview Gif: 应用 仿腾讯漫画的APP:https://github.com/zhhr1122/z_comic_new

    Android代码-MediaUtils

    重绘了录制视频和录音时的两个自定义view,可在原本基础上进行二次开发 提供了视频截图方法,支持双击放大,支持自动对焦 视频录制暂时使用 SurfaceView Camera , 后续会升级为 TextureView Camera2 简单的加了

    C#开发经验技巧宝典

    0427 如何实现双击表格行超级链接到另一页并传递参数 235 0428 如何实现单击表格行改变颜色 235 0429 鼠标移动改变表格行的颜色 235 0430 如何在Web页中使用表格控件 236 10.5 Web.Config文件的配置 237 ...

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

Global site tag (gtag.js) - Google Analytics