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



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();
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
继续阅读与本文标签相同的文章
上一篇 :
征信报告OCR:结构化提取信息 加速信贷业务审批
-
带你读《区块链真相》之一:天上掉下个区块链,吃透区块链的六大要领
2026-05-16栏目: 教程
-
物联网:关于Nand flash读写范围的问题
2026-05-16栏目: 教程
-
深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么? | 10月30号栖夜读
2026-05-16栏目: 教程
-
详细解读 Spring AOP 面向切面编程(二)
2026-05-16栏目: 教程
-
带你读《区块链真相》之三:区块链对金融行业和世界经济的影响
2026-05-16栏目: 教程
