Android實(shí)現(xiàn)微信聊天語言點(diǎn)擊喇叭動(dòng)畫效果
更新時(shí)間:2018年07月26日 17:08:59 作者:switch(mind)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)微信聊天語言點(diǎn)擊喇叭動(dòng)畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
微信聊天界面點(diǎn)擊語音時(shí),喇叭的動(dòng)畫效果,下面上代碼,該類是控制背景變化的工具類,不涉及語音錄制和播放。
圖片資源:



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;
}
}
調(diào)用方法
playBgUtil = new VoicePlayingBgUtil(handler); playBgUtil.stopPlay(); playBgUtil.voicePlay();
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter?+?Idea?環(huán)境搭建及配置教程
本文主要總結(jié)我實(shí)際搭建的過程,最后發(fā)現(xiàn)不一定按網(wǎng)上那些博客或者官方文檔寫的來也可以搭建成功,在這里小編給大家分享下Flutter?+?Idea?環(huán)境搭建及配置教程,感興趣的朋友參考下吧2021-12-12
Android編程之防止反編譯的實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程之防止反編譯的實(shí)現(xiàn)方法,涉及Android針對運(yùn)行環(huán)境、簽名及程序相關(guān)信息的獲取與判定技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
android異步加載圖片并緩存到本地實(shí)現(xiàn)方法
圖片過多造成內(nèi)存溢出,這個(gè)是最不容易解決的,要想一些好的緩存策略,比如大圖片使用LRU緩存策略或懶加載緩存策略。今天首先介紹一下本地緩存圖片2013-01-01
Android Studio ADB網(wǎng)絡(luò)調(diào)試匯總
這篇文章主要為大家詳細(xì)介紹了Android Studio ADB網(wǎng)絡(luò)調(diào)試的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android開發(fā)手冊自定義Switch開關(guān)按鈕控件
這篇文章主要為大家介紹了Android開發(fā)手冊自定義Switch開關(guān)按鈕控件的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android高版本API方法如何在低版本系統(tǒng)上做兼容性處理淺析
這篇文章主要給大家介紹了關(guān)于Android高版本API方法如何在低版本系統(tǒng)上做兼容性處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08

