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

图片资源:

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();

更多相关文章

  1. Android(安卓)Activity启动机制流程和四种启动模式
  2. android对sqlite数据库操作(创建 增 删 改 查)
  3. CocosCreator Andorid工程的启动过程
  4. Android8.0源码解析——Activity的启动过程
  5. Android(安卓)对话框(三)自定义对话框
  6. Android(安卓)内存溢出问题分析
  7. 调用Android系统设置
  8. Android与Js调用
  9. NDK(1)--体验NDK

随机推荐

  1. 基于 Android(安卓)NDK 的学习之旅-----J
  2. Android(安卓)Architecture Blueprints(架
  3. Android中的.9.png图形的机制及制作和使
  4. android HOME、back(按钮、事件)截取获得,综
  5. 【凯子哥带你夯实应用层】Android的Googl
  6. Android(安卓)So加载的路径选择以及注意
  7. Android之Android(安卓)apk动态加载机制
  8. [置顶] Android(安卓)popwindow和fragmen
  9. android 源码设计模式之--代理模式(Proxy
  10. Android(安卓)UI总结 Android(安卓)和H5