天天滾動:語言錄制兼容長按跟點擊錄制

          來源:博客園 | 2023-04-23 00:49:15 |

          錄音需求中,往往有兩種常規操作。

          長按基本實現流程:

          監聽觸摸事件,按下時錄制,抬起時停止。


          (相關資料圖)

          點擊基本流程:

          點擊開始錄制,在次點擊停止錄制

          但是凡事有絕對,如果需要同時支持長按錄制抬起結束跟點擊錄制在次點擊結束呢?面對如此無理的需求,從技術層面上怎么如絲滑般去兼容呢。

          需要兩者兼容,只能從觸摸事件入手了,這里的重點其實就在于怎么在觸摸事件中去區分點擊事件跟觸摸事件

          功能可能并不難,但是沒有一個好的思路,就會導致代碼邏輯混亂,不好維護,并且代碼過多,不夠簡潔。

          先看效果圖,前面是點擊事件,后面是觸摸長按。

          首先把開始錄制跟結束方法寫好,在觸摸事件里,按下時錄制,抬起時結束,等于是長按錄制的邏輯

          在此基礎上想要兼容點擊邏輯,其實只要一個限制就行,那就是點擊的時間。

          正常情況下我點擊后依次經歷了按下跟抬起兩個事件(觸摸不做處理),那我加個點擊時間,如果間隔小于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 判斷,完美兼容兩種錄制模式,簡單明了。

          關鍵詞:

          亚洲av无码成人影院一区| 国产亚洲精品观看91在线| 亚洲va中文字幕无码久久不卡| 亚洲av无码一区二区三区天堂| 精品国产日韩久久亚洲| 久久精品亚洲AV久久久无码 | 成人婷婷网色偷偷亚洲男人的天堂| 亚洲日本久久久午夜精品| 亚洲一区二区三区91| 亚洲乱码一二三四五六区| 亚洲午夜久久久久久尤物| 亚洲欧洲中文日产| 亚洲成人免费网站| 亚洲六月丁香婷婷综合| 中文字幕亚洲码在线| 亚洲人成色77777在线观看| 亚洲中文字幕无码中文字| 亚洲欧美日韩中文高清www777| 亚洲精品无码不卡在线播放| 亚洲高清国产拍精品熟女| 国产成人不卡亚洲精品91| 亚洲精品和日本精品| 黑人大战亚洲人精品一区| 国产成人亚洲精品青草天美| 久久久久久a亚洲欧洲aⅴ| 亚洲国产精品久久久久网站| 亚洲综合久久1区2区3区 | 亚洲人成网站在线观看青青| 国产午夜亚洲精品国产成人小说| 自拍偷自拍亚洲精品第1页| 国产成人亚洲综合无码精品 | gogo全球高清大胆亚洲| 久久国产成人亚洲精品影院 | 亚洲五月综合网色九月色| 亚洲精品乱码久久久久久V | 4480yy私人影院亚洲| 亚洲精品伊人久久久久| 国产亚洲一卡2卡3卡4卡新区| 亚洲国模精品一区| 亚洲国产精品无码专区| 亚洲毛片无码专区亚洲乱|