Android客户端语音动态接口示例代码

只要你能想到的功能,程序员一定竭尽全力为你实现,而移动端的弹窗,实现起来的难度也不是很大,大家可以按照下文的介绍去操作,相信一定能达到事半功倍的效果,下面快跟着云上诗词技术频道小编的步伐来学习吧。

首先,整体界面分三部分,最上层自定义ActionBar相信不需要我讲大家就能看出来了。

中间部分是文字动弹部分,主体就是一个设置了Padding(margin)的EditText,在EditText下面是一个剩余输入字数的描述。其实在“您还可以输入XX字”的左边还有一个用于显示录音图标的ImageView.

最下层是本文主要讲解的录音自定义控件的实现。

下面一整块整体都是自定义控件的区域,我将其命名为RecordButton,是一个继承自RelateiveLayout的ViewGroup。

在其中包括了左中右三个ImageView:试听与删除,中间的录音按钮。

在录音按钮的上下各有一个用于提示的TextView。

整体布局的载入可以通过调用 View.inflater(cxt, R.layout.xxx, null); 就行了。

同前一篇讲的一样,作为控件界面控制逻辑,我们主要看一下onTouchEvent方法:当手指按下的时候,初始化录音器。手指在屏幕上移动的时候如果滑到按钮之上的时候,event.getY会返回一个负值(因为滑出控件了嘛)。这里我写的是-50主要是为了多一点缓冲,防止误操作。

先来看代码

@Override public boolean onTouchEvent(MotionEvent event) { if (mAudioFile == null) { return false; } if (!mTouchInPlayButton) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_DOWN: initBorderLine(); break; case MotionEvent.ACTION_MOVE: if (event.getY() mRightButtonX) { mIsCancel = true; scaleView(mImgDelete, 1.5f); } else if (event.getX() mRightButtonX) {// 删除 cancelRecord(); } else { finishRecord(); } viewToInit(); bottomFlag.setVisibility(View.VISIBLE); topFlag.setVisibility(View.GONE); mIsCancel = false; mTouchInPlayButton = false; break; } return true; }

原创文章,作者:nxyxs,如若转载,请注明出处:http://www.yunshangshici.com/26439.html

(0)
上一篇 2022年6月11日 下午1:35
下一篇 2022年6月11日 下午1:35

相关推荐

返回顶部