android仿微信向上滑动取消录音解决办法

下了个例子,按下和长按都好使,但是滑动取消录音这个不好使。只能上网搜啊,

第一个解决办法:在onclick事件方法中增加CANCEL的case,如:

					case MotionEvent.ACTION_CANCEL:
					if (RECODE_STATE == RECORD_ING) {
						RECODE_STATE=RECODE_NO;
						if (dialog.isShowing()) {
							dialog.dismiss();
						}
						try {
								mr.stop();
								voiceValue = 0.0;
							} catch (IOException e) {
								e.printStackTrace();
							}
						record.setText("按住开始录音");
						//RECODE_STATE=RECORD_NO;
					}

					break;

可是不好使啊。再换

第二个解决办法:在onclick事件方法中增加MOVE的case,如:

					case MotionEvent.ACTION_MOVE:// 当手指移动到view外面,会cancel
						if (RECODE_STATE == RECORD_ING) {
							RECODE_STATE=RECODE_ED;
							if (dialog.isShowing()) {
								dialog.dismiss();
							}
							try {
									mr.stop();
									voiceValue = 0.0;
								} catch (IOException e) {
									e.printStackTrace();
								}
							scanOldFile();	
						}
					break;

还tm不好使。再换。

第三个解决办法:在搜索拖拽取消滑动时,无意中发现可以算出拖拽距离,有灵感了呀,直接算出手指滑动后抬起时的滑动距离(X轴,Y轴分别的距离),判断如果Y轴滑动距离大于100dips(abs算出绝对值),则算作取消录音。整个业务逻辑都在ACTION_UP中实现:

这样就可以了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值