Android 自定义录音、播放动画View,让你的录音浪起来

最近公司项目有一个录音的录制和播放动画需求,然后时间是那么紧,那么赶紧开撸。

先看效果图

嗯,然后大致就是这样,按住录音,然后有一个倒计时,最外层一个进度条,还有一个类似模拟声波的动画效果(其实中间的波浪会根据声音的大小浪起来的~)

2

实现思路

然后,我们适当的来分析一下这个录音动画的实现方式。这个肯定是通过自定义控件,咱们来把这个效果完完全全画出来。

大致包括以下几个点:

1. 最外层的进度条,最坑的就是一开始的一个渐变的效果 
2. 然后进度条最前方是有一个点的(我肯定选择用图片来实现) 
3. 中间的波浪(关键是要随着声音的大小浪起来) 
4. 中间的倒计时

3

实现过程

1.画最外层的圆

2.画提示的文字

3.画倒计时(静止时间)

4.画声波

这边代码就不展开了,画的有点烦,简单说下,还需要自己体会哈。上面分隔线之前的说白了就是让声波动起来,也就是改变volume的值,然后后面有3个for循环。

第一个for循环是为了确定声波水平线的位置,第二个是画声波,第三个是颜色的渐变。

5.画外圈进度的那个点

我们先会个图分析一下,如下图。A点就是起始坐标,一开始我们的小圆点是隐藏的,如果不算padding的话,x=witdh/2,y=0;

 
嗯,然后呢画图片我们用的是

canvas.drawBitmap(......);

那么要知道,drawBitmap()这个方法画的时候是我们图片的左上角去画到A点的,其实我们应该往左上角挪一点,才能让图片的中心真正意义上的和A点重合,对吧对吧,嗯,仔细思考一下。

然后继续看上面那个图,当我们A点随着时间运动到B点之后,我们要算出B点的坐标。

这边用一下三角函数啦,我们设A到B,转过的角度为α,设圆的半径为r,那么A到B其实横向增加的距离应该就是

m = x+r*sin(α);
n = y+r*cos(α);

那么我们该图片的所有代码就是:

6.画外边的带进度和带渐变的大圆

我的实现方式很简单,从我们的UI图看出,外面的大圆在1/4进度的时候是渐变的,然后剩下的3/4圆其实都是一种颜色,对吧,那我就画2个圆来实现这个效果呗。

当progress<90的时候,我们画那个渐变的圆环,当>90的时候,我们同时画出那个渐变的和纯色的圆环(当progress的时候,这个时候其实那个渐变的圆环没变化,只是纯色的圆环一直在变)。

如图:A是那个渐变的圆环,B是纯色不变的圆环 

7.然后最后就剩下一个计时器了,还有那个上面一直出现的progress

8.最后就是提供各种接口,各种绘制和启动机制了,最主要的还是上面的绘制方法。

比如你的自定义属性

以及一切其余自定义View的东西,对自定义View不熟的同学可以先去学习下怎么自定义View(其实很简单,新手不要怕),然后再去实现一些看上去挺棒的效果。

总结

嗯,大致就是这样,对于公司这些动画的需求我只想说其实你想要咋弄,都是没问题的,最重要的就是时间!本身其实最后留给开发人员的时间就不多,然后如果还要加各种动画,那不是天天加班的节奏么~

下载地址:

https://github.com/Blincheng/RecordView

时间: 2024-08-03 20:28:21

Android 自定义录音、播放动画View,让你的录音浪起来的相关文章

Android自定义水波纹动画Layout

Android自定义水波纹动画Layout 源码是双11的时候就写好了,但是我觉得当天发不太好,所以推迟了几天,没想到过了双11女友就变成了前女友,桑心.唉不说了,来看看代码吧. 展示效果 Hi前辈 话不多说,我们先来看看效果: 这一张是<Hi前辈>的搜索预览图,你可以在这里下载这个APP查看更多效果:http://www.wandoujia.com/apps/com.superlity.hiqianbei LSearchView 这是一个MD风格的搜索框,集成了ripple动画以及searc

android帧切换播放动画

android动画的简单使用 这里通过不断切换图片,达成动画效果. 在布局中,定义一个ImageButton控件 并设置好其位置. //布局文件 //很简单,就一个控件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_wi

Android 自定义可拖拽View,界面渲染刷新后不会自动回到起始位置

以自定义ImageView为例: /** * 可拖拽ImageView * Created by admin on 2017/2/21. */ public class FloatingImageView extends ImageView{ public FloatingImageView(Context context) { super(context); } public FloatingImageView(Context context, AttributeSet attrs) { su

android采用MVP漫画APP、适配刘海屏、小黄车主界面、录音波浪动画、综合APP等源码

Android精选源码 一款采用MVP架构的仿完整漫画APP源码 Android适配刘海屏幕 基于Xmpp协议的即时通讯社交软件(客户端+服务端) Android小黄车(ofo)app主页菜单效果 一款mvp开发框架 RxJava+Retrofit+MVP打造高颜值App源码 Android MVP架构开发的综合App源码 android搜索框,推荐搜索,历史搜索源码 Android自定义录音实现播放波浪效果动画View 实现android价格修改器效果源码 Android优质博客 Androi

android animation——添加购物车动画(填坑和优化)

我们经常看到不管是某宝还是某东都有加入购物车的动画.就是在点击某个商品后,这个商品变成小的缩略图移动到购物车里面去. 今天突然想着把原来做过的这么一个动画贴出来供大家学习. 先看效果图.gif工具不忍直视,真实操作是很流畅的一个抛物线. 首先从效果图看出来我们需要几个东西. 1,动画的开始位置 2,动画的结束位置 3,动画移动的图片(这里为了简单用一个小圆点,可以换成商品的缩略图) 4,动画的弧度如何处理 5,动画完成后在哪里操作数据 6,连续点击图片动画时如何new出多个动画 那么我们就来解决

【Android自定义View实战】之仿百度加载动画,一种优雅的Loading方式

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53470872 本文出自[DylanAndroid的博客] Android自定义View实战之仿百度加载动画一种优雅的Loading方式 第一个仿百度加载动画用ObjectAnimator属性动画操作ImageView的属性方法实现 第二个仿百度加载动画第二种实现方式用ValueAnimator原生的ondraw方法实现 第三个扔球动画-水平旋转动画 第四个扔球动画-垂直旋转动

android自定义View之(四)------一键清除动画

1.前言: 自己也是参考别人的一些自定义view例子,学习了一些基本的自定义view的方法.今天,我参考了一些资料,再结合自已的一些理解,做了一个一键清除的动画.当年,我实现这个是用了几张图片,采用Frame anination的方式来实现,但是这个方法,不灵活,并且占资源,下面,我就采用自定义view的方法来实现这个功能. 2.效果图: 3.具体详细代码 3.1 \res\values\attrs_on_key_clear_circle_view.xml <resources> <de

Android自定义View绘图实现拖影动画

前几天在"Android绘图之渐隐动画"一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下.这次效果好多了. 先看效果吧: 然后我们来说说基本的做法: 根据画笔宽度,计算每一条线段两个顶点对应的四个点,四点连线,包围线段,形成一个路径. 后一条线段的路径的前两个点,取(等于)前一条线段的后两点,这样就衔接起来了. 把Path的Style修改为FILL,效果是这样的: 可以看到一个个四边形,连成了路径. 好啦,现在说说怎样根据两点计算出包围

Android自定义View的实现方法,带你一步步深入了解View(四)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17357967 不 知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了,回顾一下,我们一共学习了LayoutInflater的原理分析.视图的绘制流程. 视图的状态及重绘等知识,算是把View中很多重要的知识点都涉及到了.如果你还没有看过我前面的几篇文章,建议先去阅读一下,多了解一些原理方面的东 西. 之前我有承诺过,会在View这个话题上多写几篇博客,讲一讲View的