android 防快速点击的一种实现方式
来源:互联网 发布:手机淘宝怎么投诉商家 编辑:程序博客网 时间:2024/06/07 13:19
在做多媒体项目的时候,有这么个需求:需要对视频播放控制按钮做防快速点击,实现方式有多种,最终选择了如下的一种实现方式,在生产环境中也经起了检验。做成一个工具类,方便在需要的时候直接调用。
这是一种比较原始的方式,通过实现原生的view的OnClickListener,来自定义一个防快速点击的ClickListener,这样可以使用View.OnClickListener的地方都可以使用这个自定义ClickListener。
实际上RxJava通过操作符也可以高效便捷的实现,尤其是当项目中已经依赖过RxJava库的时候,直接用RxJava的实现方案更好一些。
不扯那么远了,直接贴出这种自定义OnClickListener的比较原生的实现方案:
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import java.util.Calendar;
/**
* 防止连续点击事件,里面根据需求设置间隔时间
*/
public abstract class NoDoubleClickListener implements OnClickListener {
privatestatic final String TAG = "NoDoubleClickListener";
/**
* 防止连续点击设置的毫秒值
*/privateint MIN_CLICK_DELAY_TIME ;private long lastClickTime = 0;
/**
* 设置毫秒值的 点击事件 构造函数
* @param time 多少秒延迟的毫秒值
*/public NoDoubleClickListener(int time){MIN_CLICK_DELAY_TIME = time;
}
@Overridepublic void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();Log.i(TAG, "防止连点快进---currentTime===" +currentTime+"---lastClickTime==="+lastClickTime);if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {Log.i(TAG, "防止连点快进判断结果:" + (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME));lastClickTime = currentTime;onNoDoubleClick(v);
} else{Log.i(TAG, "防止连点快进判断结果:" + (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME));lastClickTime = currentTime;}
}
/*** 防止连续点击事件* @param*/public abstract void onNoDoubleClick(View v){
}
阅读全文
0 0
- android 防快速点击的一种实现方式
- RecyclerView 实现点击的另外一种方式
- TabLayout android Tab的一种实现方式
- 快速排序一种易于理解的方式实现
- tomcat 防xss 的一种实现
- Android中点击事件的实现方式
- ANDROID中点击事件的实现方式
- 快速排序的一种实现
- 快速排序的一种实现
- Android选取图片并上传的一种实现方式
- Android弹出式菜单-一种简单的实现方式
- Android App应用底部导航栏实现的一种方式
- Android中实现短信发送的一种方式
- 一种快速进入cmd目录的方式
- MVC的一种实现方式
- hotfix 的一种实现方式
- Android点击事件的四种实现方式
- Android中按钮点击事件的四种实现方式
- bootstrapTable 修改栏位值
- 如何判断网站是不是wordpress做的及WP主题是什么?
- 解决Session 'appname': Error Launching activity
- EventBus全解析
- 基于IMX6Q的XFM10621六麦驱动实现说明
- android 防快速点击的一种实现方式
- python 基础知识补充
- dentry与inode有什么联系和区别
- Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- C语言实现bmp图片全彩转灰度,灰度转伪彩
- svg3dtagcloud生成3D标签云
- EventBus 3.0的用法详解
- angularJS——jquery.bower
- PB动态创建控件