一、长按响应代码Utils

import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;public class LongClickUtils {private static final String TAG = "LongClickUtils";/*** @param handler           外界handler(为了减少handler的泛滥使用,最好全局传handler引用,如果没有就直接传 new Handler())* @param longClickView     被长按的视图(任意控件)* @param delayMillis       长按时间,毫秒* @param longClickListener 长按回调的返回事件*/public static void setLongClick(final Handler handler, final View longClickView, final long delayMillis, final OnLongClickListener longClickListener) {longClickView.setOnTouchListener(new OnTouchListener() {private int TOUCH_MAX = 50;private int mLastMotionX;private int mLastMotionY;@Overridepublic boolean onTouch(View v, MotionEvent event) {int x = (int) event.getX();int y = (int) event.getY();switch (event.getAction()) {case MotionEvent.ACTION_UP:// 抬起时,移除已有Runnable回调,抬起就算长按了(不需要考虑用户是否长按了超过预设的时间)handler.removeCallbacks(r);break;case MotionEvent.ACTION_MOVE:if (Math.abs(mLastMotionX - x) > TOUCH_MAX|| Math.abs(mLastMotionY - y) > TOUCH_MAX) {// 移动误差阈值// xy方向判断// 移动超过阈值,则表示移动了,就不是长按(看需求),移除 已有的Runnable回调handler.removeCallbacks(r);}break;case MotionEvent.ACTION_DOWN:// 每次按下重新计时// 按下前,先移除 已有的Runnable回调,防止用户多次单击导致多次回调长按事件的bughandler.removeCallbacks(r);mLastMotionX = x;mLastMotionY = y;// 按下时,开始计时handler.postDelayed(r, delayMillis);break;}return true;//onclick等其他事件不能用请改这里}private Runnable r = new Runnable() {@Overridepublic void run() {if (longClickListener != null) {// 回调给用户,用户可能传null,需要判断nulllongClickListener.onLongClick(longClickView);}}};});}
}

二、如何使用

说明:1、XXXView:你需要长按的控件 2、2000:代表长按的秒数,1000为一秒

        LongClickUtils.setLongClick(new Handler(), XXXView, 2000, new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {//todo:补充长按事件的处理逻辑return true;}});

Android效率组件篇 设置长按响应时间(时长)相关推荐

  1. RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动

    RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动 度娘搜索RecyclerView长按拖拽排序,很多文章讲解,没找到缩短长按响应时间的,所以自己研究了一下 先看效果 ...

  2. 编程android控制休眠时间,Android设置锁屏/休眠时长

    这个有两个方式: 一种是直接使用api修改: 另一种是修改系统数据库: 调用api需要添加权限,而修改数据库不用. 1.api设置 Settings.System.putInt(getContentR ...

  3. Android设置锁屏/休眠时长

    这个有两个方式: 一种是直接使用api修改: 另一种是修改系统数据库: 调用api需要添加权限,而修改数据库不用. 1.api设置 Settings.System.putInt(getContentR ...

  4. Android 录音文件有杂音,录音文件时长比实际时长长问题解决

    问题:在使用Android的AudioRecord进行录音时,录制生成的录音文件的时长比实际录制时间长,且录制的音频有一部分是有杂音或者没有声音的. 安卓出现录音问题还可以参考另一篇文章 Androi ...

  5. Android实现调用手机摄像头录像限制录像时长

    因为服务器空间有限,所以视频时长必须有所限制. 在xml中先布局一个按钮,点击开始录频.布局一个TextView用于显示倒计时的时间. 一.使用Hander+TimerTask完成定时操作 priva ...

  6. freeswitch 会议室录音文件时长小于会议室时长

    前段时间公司的产品发现了一个比较蛋疼的bug,就是会议室录音文件的时长比会议室时长短. 在这边先简单介绍一下使用的东西,公司做的是voip,使用的是开源的freeswtich,所有的功能都是这个开源工 ...

  7. 学习使用js得到视频时长和播放时长

    <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8&q ...

  8. 带你领略Android Jetpack组件的魅力

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  9. Android开机时长优化

    文章目录 一.背景说明 二.开机流程介绍 三.分析方法&工具 3.1 手动秒表计时 3.2 bootchart 3.2.1 生成log文件 3.2.2 生成bootchart.png 3.2. ...

最新文章

  1. javascript 变量监听器
  2. OA中项目关系,实体设计,映射实体,增删改查
  3. 对程序实施精准手术!阿里安全猎户座实验室首创“自动逆向机器人”
  4. Rsync+Inotify操作文档
  5. android studio导入jar包和so库,Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库(示例代码)...
  6. python+selenium 自动化测试环境搭建
  7. Stopwatch 类
  8. C# WinForm禁止改变大小 最大化最小化隐藏 最大化最小化隐藏
  9. 初识STM32之选型
  10. 轻松搞定JAVA选择排序
  11. 安服工程师的岗位职责
  12. bldc不同载波频率_BLDC的双闭环老调不好,求帮助
  13. iptables限速 iptables限制流量
  14. 安卓设备的Socket网络通讯例程 (A2) -UI界面适配
  15. 常用存储芯片-笔记本上固态硬盘PTS11系列推荐
  16. 字节跳动校招提前批面试
  17. 永洪bi日志清理配置
  18. linux中的head 显示文件头部内容、tail 输出文件尾部内容
  19. 解决IDEA输出乱码问题
  20. python x=[random.randint(0,100) for i in range(50)]什么意思?列表解析

热门文章

  1. 【使用Redis分布式锁实现优惠券秒杀功能】-Redis学习笔记05
  2. 【笔记】CMake构建C++工程
  3. excel文件导出、下载的响应类型设置
  4. html+css+动画过渡做遮罩层
  5. 2011-09-06 [FCKEditor插件移植至CKEditor(plus_format_fck.js)]
  6. 了解return的用法
  7. python——正则表达式(re模块)详解
  8. 输入学生姓名和学号c语言程序,C语言 从键盘输入10个学生信息(学号,姓名,年龄,性别)...
  9. hive注意事项01_空值处理
  10. 什么设备升级android9,三星升级Android 9 Pie设备公布:S9明年1月上线