博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单击事件、触摸事件
阅读量:4318 次
发布时间:2019-06-06

本文共 1538 字,大约阅读时间需要 5 分钟。

总体概述:
如果是双击事件要自己手动编写。
如果是三击或更多次数可以借鉴google工程师提供的
System
.
arraycopy
(
mHits
,
1
,
mHits
,
0
,
mHits
.
length
-
1
);

总结:给控件添加单击事件或触摸事件都要给该事件添加监听器

一些常用方法汇总:SystemClock.uptimeMillis();表示从开机开始cpu运行的时间。

1、给控件添加单击事件
例如:给一个图片对话框iv_drag添加一个单击事件
 
  1. 双击事件
  2. iv_drag.setOnClickListener(new OnClickListener(){
  3. //执行控件被点击时将执行的代码
  4. /**
  5. 注:双击事件就是间隔时间很短的单机事件
  6. 可以自定义一个双击事件
  7. */
  8. if(firstClickTime>0){
    //判断用户是否是第二次点击
  9. long sencondClickTime = SystemClock.uptimeMillis();//获得用户第二次点击的时间
  10. long dtime = sencondClickTime - firstClickTime;//获得两次单击的时间间隔
  11. if(dtime<500){
    //如果时间间隔小于500毫秒将弹出土司
  12. Toast.makeText(this, "双击了", 0).show();
  13. }else{
    //如果间隔时间过长将firstClickTime重置
  14. firstClickTime = 0;
  15. }
  16. return;
  17. }
  18. firstClickTime = SystemClock.uptimeMillis();//获得用户第一次点击的时间(注:一旦用户点击firstClickTime将被赋值)
  19. //添加子线程的和原因是,让用户在单击一次后让线程睡眠500ms如果用户在有效的双击时间内还没有再一次单击那么就将firstClickTime 置为0;
  20. new Thread(){
  21. public void run() {
  22. try {
  23. Thread.sleep(500);
  24. } catch (InterruptedException e) {
  25. e.printStackTrace();
  26. }
  27. firstClickTime = 0;
  28. };
  29. }.start();
  30. });

三击:
google工程师为我们提供了一个好用的方法:
 
  1. //定义一个数组用来存放当前点击时的系统开机时间
  2. long[] mHits = new long[3];
  3. //三击事件
  4. public void click(View view){
  5. //src 拷贝的源数组
  6. //srcPos 从源数组的那个位置开始拷贝.
  7. //dst 目标数组
  8. //dstPos 从目标数组的那个位子开始写数据
  9. //length 拷贝的元素的个数
  10. System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
  11. mHits[mHits.length-1] = SystemClock.uptimeMillis();
  12. if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
  13. Toast.makeText(this, "恭喜你,3次点击了。", 0).show();
  14. }
  15. }
  16. }
  17. 注:其中500是三次点击事件要在500ms内完成,可以修改
如果是4击,就将数组的长度设置为4,
5击,长度设置为5,
原理如下:

: 设计的很巧妙,通过数组位移来实现

转载于:https://www.cnblogs.com/candledragle/p/4245307.html

你可能感兴趣的文章
GateWay程序分析02_IAP_FLASH.H
查看>>
Stone Crusher Used in High-speed Railway Construction
查看>>
Powerful Function of Hammer Crushers Two
查看>>
an error occurred during the file system check错误的解决
查看>>
logstash json和rubydebug 第次重启logstash都会把所有的日志读完 而不是只读入新输入的内容...
查看>>
实验吧-web-Guess Next Session(session简介)
查看>>
C语言i++和++i的区别和指针*(a++)和*(++a)的区别
查看>>
在一个CommandField中为删除按钮设置OnClientClick属性
查看>>
Linux常用命令-1
查看>>
(一)Java工程化--Maven基础
查看>>
Linux磁盘空间爆满,MySQL无法启动
查看>>
Inception搭建
查看>>
设置联想键盘恢复F1~F12默认按键的操作办法
查看>>
Python编程之sqlite3数据库
查看>>
CROS+node-basis+ajax
查看>>
SetWindowLong函数
查看>>
What's New in Core Data in iOS 7
查看>>
个人编程作业2
查看>>
magento首页标题的修改
查看>>
刚刚拿到驾照?交警告诉你新手必知的10个行车好习惯
查看>>