本人在做一个录音项目的时候,要求一个button要做到三种功能:长按开始录音,手指起来的时候停止录音,点击的时候要播放录音,一开始真的是没有头绪,如果使用OnTouchListener来做,虽然可以使用时间延迟来模仿长按事件,也可以做到长按结束的监听,但是后面还要做到点击的时候播放,后来看了别人写的一些博客关于OnTouchListener、OnLongClickListener、OnClickListener三个事件的触发顺序,因此也开始尝试着写了一下,验证一些执行的顺序。后来真的成功了。

我的做法是​OnLongClickListener实现长按开始录音,当结束的时候OnTouchListener的ACTION_UP来实现监听,用OnClickListener来实现点击播放的功能。代码如下:

//长按事件,进行录音

record.setOnLongClickListener(new

View.OnLongClickListener() {

@Override

public boolean onLongClick(View v)

{

//实现录音的代码​

}

}​

//点击事件,播放录音

​record.setOnClickListener(new

View.OnClickListener() {

@Override

​public

void onClick(View v) {​

//播放录音的代码

}

}

//触摸事件,结束录音

record.setOnTouchListener(new

View.OnTouchListener() {

@Override

​public

boolean onTouch(View v, MotionEvent event) {

if (event.getAction() ==

MotionEvent.ACTION_UP &isRecord)

{​

//结束录音的代码,isRecord是一个boolean,用于判断是否在录音​

}​

}

}​

第一次写博客,只是个人总结,上面的具体录音等的实现代码网上都找得到,由于代码直接复制很乱就不浪费篇幅了,不然看着眼晕。​

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐