仿微信的语音点击播放时的语音图标动画效果

效果:

可能需要的图片:

需要定义的实例变量:

//语音动画控制器
Timer mTimer=null;
//语音动画控制任务
TimerTask mTimerTask=null;
//记录语音动画图片
int index=1;
AudioAnimationHandler audioAnimationHandler=null;

需要定义的函数:

代码:

/*** 播放语音图标动画*/private void playAudioAnimation(final ImageView imageView) {//定时器检查播放状态   stopTimer();mTimer=new Timer();//将要关闭的语音图片归位if(audioAnimationHandler!=null){Message msg=new Message();msg.what=3;audioAnimationHandler.sendMessage(msg);}audioAnimationHandler=new AudioAnimationHandler(imageView);mTimerTask = new TimerTask() { public boolean hasPlayed=false;@Override    public void run() {     if(mMediaPlayer.isPlaying()) {  hasPlayed=true;index=(index+1)%3;Message msg=new Message();msg.what=index;audioAnimationHandler.sendMessage(msg);}else{//当播放完时Message msg=new Message();msg.what=3;audioAnimationHandler.sendMessage(msg);//播放完毕时需要关闭Timer等if(hasPlayed){stopTimer();}}}};//调用频率为500毫秒一次mTimer.schedule(mTimerTask, 0, 500);}class AudioAnimationHandler extends Handler{ImageView imageView;//判断是左对话框还是右对话框boolean isleft;public AudioAnimationHandler(ImageView imageView){this.imageView=imageView;//判断是左对话框还是右对话框 我这里是在前面设置ScaleType来表示的isleft=imageView.getScaleType()==ScaleType.FIT_START?true:false;}@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);//根据msg.what来替换图片,达到动画效果switch (msg.what) {case 0 :imageView.setImageResource(isleft?R.drawable.chatfrom_voice_playing_f1:R.drawable.chatto_voice_playing_f1);break;case 1 :imageView.setImageResource(isleft?R.drawable.chatfrom_voice_playing_f2:R.drawable.chatto_voice_playing_f2);break;case 2 :imageView.setImageResource(isleft?R.drawable.chatfrom_voice_playing_f3:R.drawable.chatto_voice_playing_f3);break;default :imageView.setImageResource(isleft?R.drawable.chatfrom_voice_playing_f3:R.drawable.chatto_voice_playing_f3);break;}}}/*** 停止*/private void stopTimer(){  if (mTimer != null) {  mTimer.cancel();  mTimer = null;  }  if (mTimerTask != null) {  mTimerTask.cancel();  mTimerTask = null;  }   } 

仿微信的语音点击播放时的语音图标动画效果相关推荐

  1. 语音点击播放时的语音图标以及GIF动画效果图

    因为业务需求所以请了UI作图 然后生成的GIF动图 (因为GIF在线合成一般都收费或者限制只能一天一个又或者生成出来是黑底不是白底)   所以在这提供给有需要的有缘人

  2. Android仿微信聊天语言点击喇叭动画效果

    微信聊天界面点击语音时,喇叭的动画效果,下面上代码,该类是控制背景变化的工具类,不涉及语音录制和播放. 图片资源: package xxx;import android.os.Handler; imp ...

  3. android 加号弹出菜单,Android仿微信、qq点击右上角加号弹出操作框

    Android仿微信.qq点击右上角加号弹出操作框,先上图,类似于下图这种,点击加号,会弹出一个对话框,如下图: 微信: 自己实现: 接下来,我们来实现此功能: 其实,实现原理就是,点击"+ ...

  4. Android自定义弹窗模仿微信,Android仿微信、qq点击右上角加号弹出操作框

    Android仿微信.qq点击右上角加号弹出操作框,先上图,类似于下图这种,点击加号,会弹出一个对话框,如下图: 微信: 自己实现: 接下来,我们来实现此功能: 其实,实现原理就是,点击"+ ...

  5. 关于video标签,禁止点击播放时自动全屏,和video出现诡异窗口重叠

    禁止点击video时自动全屏问题:加上x5-playsinline属性或者x5-video-player-type="h5",都可以禁用全屏,其中x5-video-player-t ...

  6. react项目中播放音频时扬声器图标动画效果

    今天在做react项目时,一个小的功能需求:点击播放音频时扬声器图标要实现动画效果. 起初我做出来的效果是第一次点击播放音频时,音频图标会有动画效果,但继续点击动画效果却没有了. 后面我的做法如下: ...

  7. html在背景上自动打字,Js制作点击输入框时默认文字消失的效果

    为了提高用户体验和易用度,一些设计师会对网页中用户经常用的东西进行优化,比如输入框.一般的输入框是怎样优化的呢?从用户体验的角度出发,简化用户使用步骤,让用户用得更方便就是提高了易用性,例如当鼠标悬浮 ...

  8. 如何制作点击输入框时默认文字消失的效果

    为了提高用户体验和易用度,一些设计师会对网页中用户经常用的东西进行优化,比如输入框.一般的输入框是怎样优化的呢?从用户体验的角度出发,简化用户使用步骤,让用户用得更方便就是提高了易用性,例如当鼠标悬浮 ...

  9. uniapp - [全端兼容] 音乐列表播放与切换歌曲,点击列表播放 mp3 wav 音乐文件(支持点击播放与暂停,图标切换 / 流畅的切换音频、暂停保留歌曲及恢复功能等详细教程)

    前言 网上教程都太乱了,各种不兼容.功能缺陷等问题,我们很难对示例进行改造. 本文站在新手角度,实现了 uniapp 全平台兼容,歌曲音乐列表点击播放与暂停.切换歌曲等功能(音乐列表多个音频切换), ...

  10. 子弹射中敌人播放爆炸并销毁的动画效果

    首先在敌人enemy 的脚本下面 public class enemy : MonoBehaviour {public EnemyType type=EnemyType.enemy0;private ...

最新文章

  1. python百度翻译包_python百度翻译移动端
  2. Jdk1.8新特性(三)——方法引用::
  3. 疯狂.NET架构通用权限后台管理工具演示版2.0下载
  4. Maven项目错误解决小结
  5. File类、递归、字节流
  6. Html5不允许修改但允许赋值,JavaScript | 引用类型变量的赋值问题
  7. Vue.js 学习笔记 二,一些输出指令
  8. acrobat 控件可以发布吗_自己能做小程序商城吗?可以发布使用吗
  9. 2020年十大电子邮件抓取工具—用于销售勘探
  10. 笔记本电脑怎么拆开后盖_怎么拆解笔记本?新手拆解笔记本注意事项
  11. 用python画蜡笔小新的步骤_蜡笔小新 - python代码库 - 云代码
  12. 苹果开发证书导出P12的问题
  13. session的活化和钝化
  14. c语言实现字符串连接
  15. 给小朋友讲故事——食盐的重要性实验
  16. headfirst 笔记 第七章
  17. 微信群管理助手哪里弄的?
  18. 带例子的测试用例模板
  19. Exe文件开机启动,隐藏运行窗口运行
  20. JavaScript Promise迷你书(中文版)

热门文章

  1. MySQL 临时表的原理以及优化手段
  2. 关于使用itextpdf生成pdf的页面横向和竖向
  3. php微信网页授权获取用户基本信息,微信网页授权获取用户基本信息
  4. jsp:setProperty的用法
  5. 使用SpringBoot连接Access数据库
  6. 在边缘试探的滴滴顺风车 凭什么在2019年再上线?
  7. Exception in thread main java.lang.NoSuchMethodException: xxx.main([Ljava.lang.String;)
  8. 通过精读一本英文技术书籍搞定英语
  9. Origin 画图——简单的柱状图画法
  10. startuml如何画流程图_怎样在迅捷画图在线网站中绘制UML流程图