android 麦克风 动画,Android实现微信聊天语言点击喇叭动画效果
```javapackage com.example.animationdemo;
import android.os.Handler;
import android.widget.ImageView;
import com.example.animationdemo.R;
public class VoiceAnimationUtil {
private ImageView mVoiceIcon;
private Handler mHandler;
private boolean isPlaying;
public VoiceAnimationUtil(ImageView voiceIcon) {
this.mVoiceIcon = voiceIcon;
this.mHandler = new Handler();
this.isPlaying = false;
}
// 开始播放语音动画 public void startVoiceAnimation() {
if (!isPlaying) {
isPlaying = true;
mHandler.post(mVoiceRunnable);
}
}
// 停止播放并重置动画 public void stopVoiceAnimation() {
isPlaying = false;
mHandler.removeCallbacks(mVoiceRunnable);
mVoiceIcon.setImageResource(R.drawable.voice_icon); //重置动画 }
// 控制图标切换动画 private Runnable mVoiceRunnable = new Runnable() {
@Override public void run() {
if (isPlaying) {
// 判断当前图标 if (mVoiceIcon.getTag() == null || mVoiceIcon.getTag().equals("voice_icon1")) {
mVoiceIcon.setImageResource(R.drawable.voice_icon2);
mVoiceIcon.setTag("voice_icon2");
} else {
mVoiceIcon.setImageResource(R.drawable.voice_icon1);
mVoiceIcon.setTag("voice_icon1");
}
mHandler.postDelayed(mVoiceRunnable,500); // 控制切换速度 }
}
};
}
```
上述代码是一个控制语音图标动画的工具类,利用Handler实现定时切换图标资源,从而实现喇叭动画效果。在使用时,需要结合实际情况调用startVoiceAnimation开始动画,stopVoiceAnimation停止并重置动画。
接下来我们可以在使用的地方调用这个工具类来实现微信聊天消息语音的点击动画效果。比如在Activity或者Fragment中:
```javapublic class ChatActivity extends AppCompatActivity {
private ImageView mVoiceIcon;
private VoiceAnimationUtil mVoiceAnimationUtil;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
mVoiceIcon = findViewById(R.id.voice_icon);
mVoiceAnimationUtil = new VoiceAnimationUtil(mVoiceIcon);
mVoiceIcon.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// 模拟语音点击,开始播放动画 mVoiceAnimationUtil.startVoiceAnimation();
// 在真实场景中,需要调用相应的语音录制和播放功能来触发动画效果 // 可以在录制或播放完成后调用stopVoiceAnimation来停止动画 // 比如录制完成后mVoiceAnimationUtil.stopVoiceAnimation()
}
});
}
}
```
在上述代码中,我们创建了一个ChatActivity,并在其布局中包含了一个ImageView用来显示语音点击动画,然后在点击事件中调用VoiceAnimationUtil来控制动画的开始和停止。在实际场景中,可以结合语音录制和播放的功能来触发动画效果。
除此之外,也可以根据需求来定制动画效果,比如改变切换速度、使用帧动画等。希望以上代码对实现微信聊天语音点击喇叭动画效果有所帮助。