自定义View实现单击,双击效果
来源:互联网 发布:c语言指针和引用 编辑:程序博客网 时间:2024/06/16 06:31
自定义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
- 自定义View实现单击,双击效果
- 实现对view的单击双击监听
- 自定义View实现刮刮卡效果
- 自定义View实现SwichButton效果
- 自定义 View 实现钟表效果
- 自定义View实现索引效果
- 自定义view实现炸弹效果
- View单击双击长按事件
- 电脑单击出现双击的效果
- android view实现onclick单击,doubleclick双击回调,而且不冲突。
- android view实现onclick单击,doubleclick双击回调,而且不冲突。
- Android中用手势的双击事件实现图片单击放大效果
- 自定义onTouch事件,单击、双击、拖动
- 自定义View实现转盘旋转效果
- 自定义view实现图文环绕的效果
- 自定义view实现水波荡漾的效果
- android自定义view实现progressbar的效果
- 自定义view实现水波纹效果
- BZOJ 1036: [ZJOI2008]树的统计Count
- 复杂链表的复制(复制含有随机指针节点的链表)
- Android开发之如何保证Service不被杀掉 这只是介绍少走弯路 必须用C/jni 实现守护进程 java是无法实现的
- oracle clob转成java String
- delphi带包编译详解 build with runtime package
- 自定义View实现单击,双击效果
- backbone+SUI+组件化开发,移动开发例子
- AndroidStudio 中如何导入和删除jar包
- ServletContext的讲解
- 自定义View之仿淘宝详情页
- Android设置空间的透明度
- ccf201604-4 游戏
- 带你读开源—ASP.NET_MVC(六)
- 【SDL】SDL简介