关闭

自定义View实现单击,双击效果

355人阅读 评论(0) 收藏 举报
分类:

自定义View,

1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数

2. 在MyView中的 onTouchEvent 中调用 上面的线程

3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击事件, 单击, 双击, 三击, 都可以处理

 

核心代码如下:  

复制代码
public class MyView extends View {

   ......

    // 统计500ms内的点击次数
    TouchEventCountThread mInTouchEventCount = new TouchEventCountThread();
    // 根据TouchEventCountThread统计到的点击次数, perform单击还是双击事件
    TouchEventHandler mTouchEventHandler = new TouchEventHandler();

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                if (0 == mInTouchEventCount.touchCount) // 第一次按下时,开始统计
                    postDelayed(mInTouchEventCount, 500);
                break;
            case MotionEvent.ACTION_UP:
                // 一次点击事件要有按下和抬起, 有抬起必有按下, 所以只需要在ACTION_UP中处理
                mInTouchEventCount.touchCount++;
                // 如果是长按操作, 则Handler的消息,不能将touchCount置0, 需要特殊处理
                if(mInTouchEventCount.isLongClick) {
                    mInTouchEventCount.touchCount = 0;
                    mInTouchEventCount.isLongClick = false;
                }
                break;
            case MotionEvent.ACTION_MOVE:
                break;
            case MotionEvent.ACTION_CANCEL:
                break;
            default:
                break;
        }

        return super.onTouchEvent(event);
    }

    public class TouchEventCountThread implements Runnable {
        public int touchCount = 0;
        public boolean isLongClick = false;

        @Override
        public void run() {
            Message msg = new Message();
            if(0 == touchCount){ // long click
                isLongClick = true;
            } else {
                msg.arg1 = touchCount;
                mTouchEventHandler.sendMessage(msg);
                touchCount = 0;
            }
        }
    }

    public class TouchEventHandler extends Handler {

        @Override
        public void handleMessage(Message msg) {
            Toast.makeText(mContext, "touch " + msg.arg1 + " time.", Toast.LENGTH_SHORT).show();
            //在此处可以判断msg.arg1的数值是1还是2,来判断单击还是双击
        }
    }

    ......

}
0
0
查看评论

android view实现onclick单击,doubleclick双击回调,而且不冲突。

看到很多双击的实现方式都是在单击的前提下实现的; 会出现冲突,双击的时候第一个其实是单击; 我们想要实现的方式是,双击和单击分开,双击的时候不会执行单击的响应。
  • u010878994
  • u010878994
  • 2017-01-12 15:47
  • 809

实现对view的单击双击监听

这里只介绍使用方法: 1.实现一个GestureDetector监听器 2.设置setOnDoubleTapListener监听 3.实现onDoubleTap(执行双击操作) 4.实现onSingleTapConfirmed(执行单击操作) // 手势监听器 GestureDe...
  • u013626215
  • u013626215
  • 2014-12-09 17:44
  • 1531

红帽linux鼠标单击打开文件变为双击打开

Applications-->Preferences-->More Preferences-->File Management-->Behavior 选择Duoble chick to activate items
  • hechao19867187
  • hechao19867187
  • 2010-01-08 11:00
  • 476

Android利用自定义View实现水波纹效果

这个是朋友当时帮我写出来的一个,自定义View实现水波纹的效果   记录下来,以后多看看   温故而知新    效果图就是这样      这是 在自定义View类写的代码 package com.example...
  • better_candy
  • better_candy
  • 2015-08-27 10:25
  • 434

Cocos2d-x处理双击事件的两种方法!

在 Cocos2d-x的开发过程中有些时候也是需要用到双击的事件处理,那么由于在cocos2d-x中没有实现对双击的事件的处理,那么我们就需要自己用代码实现。 下面介绍两种方式实现双击事件的处理。 (一)方法一 第一种方法就是利用两次touch之间的时间间隔来判定是单击或...
  • tspangle
  • tspangle
  • 2014-05-08 16:26
  • 4503

Android自定义View使用canvas实现轮播图效果

1.功能分析 1.1 左右滑动切换图片,并且实现循环切换。 1.2 自动切换图片 1.3 导航圆点跟随轮播变更 1.4 点击图片,实现监听反馈 1.5 图片需要适配屏幕,按定义宽高显示 2.代码实现 2.1 实现原理 每次加载显示需要3张图片,并且偏移至左中右三个位置,不...
  • ljzdyh
  • ljzdyh
  • 2016-07-25 14:13
  • 2002

View单击双击长按事件

public class ImageActivity extends Activity implements GestureDetector.OnGestureListener{ private ImageView mImage; private ImageLoader mImage...
  • bianshaopeng
  • bianshaopeng
  • 2017-05-27 09:15
  • 156

Android 自定义View:实现View的滑动效果

讲解了View的触摸事件,已经实现View滑动的7种方式
  • MR_D_j
  • MR_D_j
  • 2016-04-24 20:08
  • 6426

Android通过onTouch事件实现单击,双击,长按

一般采用延时做法。 private int mClickcount; // 点击次数 private int mDownX; private int mDownY; private int mMoveX; private int mMoveY; private int mUpX; privat...
  • LikeSidehu
  • LikeSidehu
  • 2017-04-08 12:42
  • 1001

android 自定义view实现表盘效果

android 自定义view实现表盘效果
  • coderinchina
  • coderinchina
  • 2016-11-06 22:00
  • 2872
    个人资料
    • 访问:10167次
    • 积分:262
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:3篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论