Android实现微信聊天语言点击喇叭动画效果

 更新时间:2018年07月26日 17:08:59   作者:switch(mind)  
这篇文章主要为大家详细介绍了Android实现微信聊天语言点击喇叭动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

微信聊天界面点击语音时,喇叭的动画效果,下面上代码,该类是控制背景变化的工具类,不涉及语音录制和播放。

图片资源:

这里写图片描述

这里写图片描述

这里写图片描述

package xxx;

import android.os.Handler;
import android.widget.ImageView;

import xxx.R;

import java.util.Timer;
import java.util.TimerTask;

public class VoicePlayingBgUtil {

  private Handler handler;

  private ImageView imageView;

  private ImageView lastImageView;

  private Timer timer = new Timer();
  private TimerTask timerTask;

  private int i;

  private int modelType = 1;//类型

  private int[] leftVoiceBg = new int[] { R.drawable.gray1, R.drawable.gray2, R.drawable.gray3 };
  private int[] rightVoiceBg = new int[] { R.drawable.green1, R.drawable.green2, R.drawable.green3 };
  private int[] collectVoiceBg = new int[] { R.drawable.collect_voice_1, R.drawable.collect_voice_2, R.drawable.collect_voice_3 };

  public VoicePlayingBgUtil(Handler handler) {
    super();
    this.handler = handler;
  }

  public void voicePlay() {
    if (imageView == null) {
      return;
    }
    i = 0;
    timerTask = new TimerTask() {

      @Override
      public void run() {
        if (imageView != null) {
          if (modelType == 1) {
            changeBg(leftVoiceBg[i % 3], false);
          }else if(modelType==2){
            changeBg(rightVoiceBg[i % 3], false);
          }else if(modelType==3){
            changeBg(collectVoiceBg[i % 3], false);
          }
        }
        else {
          return;
        }
        i++;
      }
    };
    timer.schedule(timerTask, 0, 500);
  }

  public void stopPlay() {
    lastImageView = imageView;
    if (lastImageView != null) {
      switch (modelType) {
        case 1:
          changeBg(R.drawable.gray3, true);
          break;
        case 2:
          changeBg(R.drawable.green3, true);
          break;
        case 3:
          changeBg(R.drawable.collect_voice_3, true);
        default:
          changeBg(R.drawable.gray3, true);
          break;
      }
      if (timerTask != null) {
        timerTask.cancel();
      }
    }
  }

  private void changeBg(final int id, final boolean isStop) {
    handler.post(new Runnable() {
      @Override
      public void run() {
        if (isStop) {
          lastImageView.setImageResource(id);
        }
        else {
          imageView.setImageResource(id);

        }
      }
    });
  }

  public void setImageView(ImageView imageView) {
    this.imageView = imageView;
  }

  public void setModelType(int modelType) {
    this.modelType = modelType;
  }

}

调用方法

 playBgUtil = new VoicePlayingBgUtil(handler);
 playBgUtil.stopPlay();
 playBgUtil.voicePlay();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Flutter + Idea 环境搭建及配置教程

    Flutter + Idea 环境搭建及配置教程

    本文主要总结我实际搭建的过程,最后发现不一定按网上那些博客或者官方文档写的来也可以搭建成功,在这里小编给大家分享下Flutter + Idea 环境搭建及配置教程,感兴趣的朋友参考下吧
    2021-12-12
  • Android编程之防止反编译的实现方法

    Android编程之防止反编译的实现方法

    这篇文章主要介绍了Android编程之防止反编译的实现方法,涉及Android针对运行环境、签名及程序相关信息的获取与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • android IPC之binder通信机制

    android IPC之binder通信机制

    Binder通信机制说来简单,但是在使用的过程的遇到了一些问题,最后终于解决了,现在晒出来和大家分享一下,希望可以帮助你们
    2012-11-11
  • Android自定义View之酷炫圆环(二)

    Android自定义View之酷炫圆环(二)

    这篇文章主要介绍了Android自定义View之酷炫圆环,本文是第二篇针对Android圆环实现方法进行的详细阐述,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android常用的数据加密方式代码详解

    Android常用的数据加密方式代码详解

    这篇文章主要介绍了Android常用的数据加密方式代码详解,介绍了四种常见加密算法及代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Android 帧动画的实例详解

    Android 帧动画的实例详解

    这篇文章主要介绍了Android 帧动画的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • android异步加载图片并缓存到本地实现方法

    android异步加载图片并缓存到本地实现方法

    图片过多造成内存溢出,这个是最不容易解决的,要想一些好的缓存策略,比如大图片使用LRU缓存策略或懒加载缓存策略。今天首先介绍一下本地缓存图片
    2013-01-01
  • Android Studio ADB网络调试汇总

    Android Studio ADB网络调试汇总

    这篇文章主要为大家详细介绍了Android Studio ADB网络调试的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android开发手册自定义Switch开关按钮控件

    Android开发手册自定义Switch开关按钮控件

    这篇文章主要为大家介绍了Android开发手册自定义Switch开关按钮控件的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android高版本API方法如何在低版本系统上做兼容性处理浅析

    Android高版本API方法如何在低版本系统上做兼容性处理浅析

    这篇文章主要给大家介绍了关于Android高版本API方法如何在低版本系统上做兼容性处理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-08-08

最新评论