语言录制兼容长按跟点击录制

录音需求中,往往有两种常规操作。

长按基本实现流程:

监听触摸事件,按下时录制,抬起时停止。

点击基本流程:

点击开始录制,在次点击停止录制

但是凡事有绝对,如果需要同时支持长按录制抬起结束跟点击录制在次点击结束呢?面对如此无理的需求,从技术层面上怎么如丝滑般去兼容呢。

需要两者兼容,只能从触摸事件入手了,这里的重点其实就在于怎么在触摸事件中去区分点击事件跟触摸事件

功能可能并不难,但是没有一个好的思路,就会导致代码逻辑混乱,不好维护,并且代码过多,不够简洁。

先看效果图,前面是点击事件,后面是触摸长按。

 语言录制兼容长按跟点击录制

首先把开始录制跟结束方法写好,在触摸事件里,按下时录制,抬起时结束,等于是长按录制的逻辑

在此基础上想要兼容点击逻辑,其实只要一个限制就行,那就是点击的时间。

正常情况下我点击后依次经历了按下跟抬起两个事件(触摸不做处理),那我加个点击时间,如果间隔小于800毫秒,就不做处理。

这时候我点击只会触发一次按下事件,等我下次点击时,已经超过了800毫秒,并且可以防止快速点击,一举两得(快速点击录制时长过短,需要限制,禁止无意义操作)。

在回到触摸逻辑,我点击录制,不松手,超过800毫秒,此时我在抬起,直接触发抬起事件,逻辑如丝滑般柔顺。

ivRecord.setOnTouchListener { _, event ->
            if (abs(System.currentTimeMillis() - downTimeInMillis) >= 800L) {
                when (event.action) {
                    MotionEvent.ACTION_DOWN -> {
                        start()
                    }
                    MotionEvent.ACTION_CANCEL,
                    MotionEvent.ACTION_UP -> {
                        stop()
                    }
                }
            }
            true
        }

一行 if 判断,完美兼容两种录制模式,简单明了。

 

原文链接:https://www.cnblogs.com/LiuZhen/p/17343285.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:语言录制兼容长按跟点击录制 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月24日

相关文章

  • 京东小程序折叠屏适配探索

    前言 随着近年来手机行业的飞速发展,手机从功能机进入到智能机,手机屏幕占比也随着技术和系统的进步越来越大,特别是Android 10推出以后,折叠屏逐渐成为Android手机发展的趋势。 图 1 Android手机屏幕发展趋势 京东小程序近年来也支持了越来越多的业务和应用,做好小程序的折叠屏的适配也是符合未来的发展趋势,能为用户和业务方提供更好的体验和价值。…

    Android 2023年5月8日
    00
  • 用户订阅付费如何拆解分析?看这篇就够了

    会员制的订阅付费在影音娱乐行业中已相当普及,近几年,不少游戏厂商也开始尝试订阅收费模式。在分析具体的用户订阅偏好以及订阅付费模式带来的增长效果时,我们常常会有这些疑问: 如何从用户的整体付费行为中具体拆解订阅付费事件并分析? 想要了解当前应用内用户的整体订阅概况? 订阅用户和非订阅用户在留存与付费偏好是否存在差异? …… 而这些都能在华为分析服务—订阅分析中…

    Android 2023年4月25日
    00
  • 小程序容器助力组装移动银行超级APP

    移动银行APP作为一种重要的商业渠道,是数字获客客户、生态建设和品牌传播的关键。近年来,作为银行机构客户经营的重要平台,移动银行APP利用技术不断迭代升级和创新手机银行APP服务功能。 根据艾瑞关于2022年中国手机银行 App 的研究分析显示,自2016年起,银行业平均业务离柜率呈上升趋势,2021年已有超90%的银行业务实现离柜办理,截止到2022年6月…

    Android 2023年4月17日
    00
  • uni-app在跨平台小程序中的实践

       1. 背景  随着移动互联网的高速发展,各家大厂的小程序百花齐放,在用户规模及商业化方面都取得了极大的成功。微信小程序的日活超过5亿,其他追赶者如:支付宝、百度、字节跳动小程序的月活也纷纷超过3亿。鉴于小程序相比App,无需下载等待,有更高的激活率,相比H5有更好的下单转化率,汽车报价业务线借助各平台的优势,大力发展小程序业务。 目前国内头部应用中,有…

    Android 2023年4月18日
    00
  • Android模拟器调试串口

    一、安装虚拟串口软件 虚拟串口软件推荐 Virtual Serial Port Driver 官网 和 Virtual Serial Port Kit 官网 都可以免费试用15天。 这里以Virtual Serial Port Kit为例,打开安装好的Virtual Serial Port Kit,点击菜单栏的新增图标 然后选择两个端口点确定即可 1.1 测…

    Android 2023年4月17日
    00
  • Opengl ES之踩坑记

    前因 最近在尝试使用Opengl ES实现一些LUT滤镜效果,在实现这些滤镜效果的时候遇到一些兼容性的坑,踩过这些坑后我希望把这几个坑分享给读者朋友们,希望同在学习Opengl ES的朋友们能少走弯路。 关于LUT滤镜相关的介绍,也是这个Opengl ES系列入门教程的一项内容,在后面的文章中会专门介绍,这里暂时不展开讲解,后续大家敬请期待。 踩坑详情 1、…

    Android 2023年4月18日
    00
  • Jetpack Compose学习(11)——Navigation页面导航的使用

    原文:Jetpack Compose学习(11)——Navigation页面导航的使用 – Stars-One的杂货小窝 在Android原生的View开发中的,也是有Navigation,原生我之后可能再出篇教程,今天讲解的则是compose版本的Navigation组件的使用 本系列以往文章请查看此分类链接Jetpack compose学习 说明 在原生…

    Android 2023年4月18日
    00
  • Android中drawable和mipmap到底有什么区别

    欢迎通过我的个人博客来查看此文章 老项目代码中发现有的图片放到了drawable中, 有的图片放到了mipmap中, 开发时秉承哪个目录下文件多放哪里的原则, 偶尔有疑惑搜一搜文章, 看到了结论也就这么使用了, 不过今日有时间, 依次检验了一下文章中的内容, 发现和实际的表现出入甚远. 常见的几种结论 Case 1 drawable会剔除其它密度, mipm…

    Android 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部