Android控件的两次及多次点击事件
2016-05-16 11:10
369 查看
自己模拟了一个Button的双击事件,想到三击事件要怎么写呢?通过查看Google大牛的多次点击的事件,发现我的学渣真是难以望其项背。。。
多次点击事件的原理:记录每次点击事件的当前时间,判断最后一次点击与第一次点击事件的时间的差值,如果小于500ms(可以自己定义这个值),认为是多次点击事件。下面以3次点击事件为例写一个代码。
1,mHits数组长度相当于点击点击次数。也就是说现在数组长度为3,我们可以监听快速点击3次的事件。
2,System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);数组的复制,第一个参数:要被拷贝的数组;第二个参数:从哪个位置开始拷贝(这里就是从1开始);第三个参数:目标数组;第四个参数:从目标数组的哪个位置开始存放(这里是从0开始);第五个参数:拷贝的长度。通过这个方法,我们实现了对每一个点击事件的时间进行记录,可以判断任意连续3次点击是否视为3击事件。
3,if (mHits[0] >= (mHits[mHits.length - 1] - 500)){}:这个用来判断是否是3击事件 ,判断数组中下标为2的点击事件的时间与数组中下标为0的点击事件的时间差值是否小于500;若小于500认为是3击事件,处理写在{}中;否则不为3击事件。
package cn.com.cyj.doubleclick;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
// 数组长度代表点击次数
long[] mHits = new long[3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 双击事件
* @param v
*/
public void click(View v) {
// 数组依次先前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();// 开机后运行时间
if (mHits[0] >= (mHits[mHits.length - 1] - 500)) {
Toast.makeText(this, "3连击", Toast.LENGTH_LONG).show();
}
}
}
多次点击事件的原理:记录每次点击事件的当前时间,判断最后一次点击与第一次点击事件的时间的差值,如果小于500ms(可以自己定义这个值),认为是多次点击事件。下面以3次点击事件为例写一个代码。
1,mHits数组长度相当于点击点击次数。也就是说现在数组长度为3,我们可以监听快速点击3次的事件。
2,System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);数组的复制,第一个参数:要被拷贝的数组;第二个参数:从哪个位置开始拷贝(这里就是从1开始);第三个参数:目标数组;第四个参数:从目标数组的哪个位置开始存放(这里是从0开始);第五个参数:拷贝的长度。通过这个方法,我们实现了对每一个点击事件的时间进行记录,可以判断任意连续3次点击是否视为3击事件。
3,if (mHits[0] >= (mHits[mHits.length - 1] - 500)){}:这个用来判断是否是3击事件 ,判断数组中下标为2的点击事件的时间与数组中下标为0的点击事件的时间差值是否小于500;若小于500认为是3击事件,处理写在{}中;否则不为3击事件。
package cn.com.cyj.doubleclick;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
// 数组长度代表点击次数
long[] mHits = new long[3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 双击事件
* @param v
*/
public void click(View v) {
// 数组依次先前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();// 开机后运行时间
if (mHits[0] >= (mHits[mHits.length - 1] - 500)) {
Toast.makeText(this, "3连击", Toast.LENGTH_LONG).show();
}
}
}
相关文章推荐
- flex 控件的重要属性
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- WinForm实现移除控件某个事件的方法
- C#分屏控件用法实例
- jquery UI Datepicker时间控件的使用及问题解决
- 可以浮动某个物体的jquery控件用法实例
- jQuery操作基本控件方法实例分析