`

类微信播放音频帧动画实现

 
阅读更多

 

package com.example.frame_animation;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;


/**
 * 帧动画示例
 * 出自:http://blog.csdn.net/aminfo/article/details/7847761
 * 
 * @author chenwenbiao
 * @date 2013-12-2 下午7:37:07
 * @version V1.0
 */
public class MainActivity extends Activity {
	
	private  String TAG = "MainActivity";
	
	private ImageView animationIV;
	private Button playButton , stopButton;
	private AnimationDrawable animationDrawable;
	
	/**
	 * 指定播放时长(单位:秒)
	 */
	private EditText timeEditText ;
	
	/**
	 * 等播放的图片
	 */
	private int[] images = { R.drawable.audio_one, R.drawable.audio_two ,R.drawable.audio_three};
	
	/**
	 * 设置了新播放时间
	 */
	private boolean newTime = true;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
       
        
        
        animationIV = (ImageView) findViewById(R.id.animationIV);
        playButton = (Button) findViewById(R.id.buttonA);
        stopButton = (Button) findViewById(R.id.buttonB);
        timeEditText = (EditText) findViewById(R.id.timeEditText);
        timeEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
 

			@Override
			public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
				if (actionId == EditorInfo.IME_ACTION_GO) {
					 Log.d(TAG , "heheh");
                }
				
				
				Log.d(TAG , "actionId :" + actionId);
 
                return false;
			}
 
        });


		animationIV.setImageResource(R.anim.animation3);
		animationDrawable = (AnimationDrawable) animationIV.getDrawable();
		
		
		animationDrawable.setOneShot(true);
		
		
		
        playButton.setOnClickListener(new OnClickListener()
        {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				
				if(newTime){
					int runTime = Integer.parseInt(timeEditText.getText().toString()) * 1000;//转为秒
					Log.d(TAG , "runTime:" + runTime);
					
					int loop = 0;
					if(runTime > 600){
						runTime -= 600;//默认完整动画播放时间是0.6秒,
						loop = runTime / 600 + 1;//计算还需要多少播放多少次动画
					}
					
					Log.d(TAG , "loop:" + loop);
					for(int i = 0 ; i < loop ; i++){
						for(int j = 0 ; j < 3 ; j++){
							animationDrawable.addFrame(getResources().getDrawable(images[j]), 200); 
						}
					}
					
					newTime = false;
				}
				
				
				animationDrawable.stop();
				animationDrawable.start();
			}
        	
        }); 
        
        stopButton.setOnClickListener(new OnClickListener()
        {
			@Override
			public void onClick(View v) {
				animationDrawable.stop();
			}
        	
        });
        
        
    }
    
   
}

 

完整代码见附件。

 

分享到:
评论

相关推荐

    js模仿微信语音播放的动画效果

    每次动画帧更新时,检查音频的播放进度,相应地改变按钮的动画状态。 6. **兼容性处理**: - 不同浏览器对音频和动画的支持程度不同,需要进行兼容性检查,例如使用`canPlayType`检测音频格式是否支持,确保动画在...

    访微信语音播放动画

    - Android提供了多种实现UI动画的方式,如帧动画(`AnimationDrawable`)、属性动画(`ObjectAnimator`)以及视图动画(`Animation`类)。微信可能使用了属性动画来实现平滑的过渡效果,通过改变按钮图像的透明度、...

    微信小程序开发之录音机 音频播放 动画实例 (真机可用).docx

    微信小程序开发之录音机音频播放动画实例需要考虑多个技术点,包括录音机实现、音频播放实现、动画实现和文件存储实现。只有正确地实现这些技术点,才能实现一个完整的录音机音频播放动画实例。

    仿微信抢红包dialog和动画

    这些动画可以通过帧动画或属性动画来实现,确保流畅自然。 此外,为了使动画更加逼真,我们还可以添加音效。Android提供了MediaPlayer类来播放音频资源,可以预先准备一个红包打开的声音文件,在动画执行时同步播放...

    纯CSS实现语音动画.docx

    在这个关键帧动画中,我们定义了三个阶段:0%、50%和100%。在0%时,波浪颜色较浅,高度为10%,并且顶部有25%的内边距,模拟波浪的起始状态。在50%时,颜色变深,高度达到100%,内边距为0,表示波浪到达最高点。最后...

    HTML5多动画手动滑屏微信宣传页

    CSS3动画允许开发者创建平滑的过渡效果、关键帧动画,而JavaScript动画则提供了更灵活的控制,可以实现复杂的交互。这些动画可能包括滑动过渡、淡入淡出、旋转、缩放等各种视觉效果,提升页面的吸引力。 "手动滑屏...

    html5仿微信聊天语音发送话筒录音动画特效.7z

    在这个"html5仿微信聊天语音发送话筒录音动画特效.7z"压缩包中,我们可以看到一个实现微信聊天语音发送功能的实例,它包含了话筒录音动画效果,以及与之相关的源码和图片素材。 首先,这个特效的核心是利用HTML5的...

    html5仿微信聊天语音发送话筒录音动画特效.zip

    这通常通过在每一帧更新Canvas上的图像来实现,利用`requestAnimationFrame`来确保平滑的动画过渡。 录音过程中,`AnalyserNode`可以获取音频的频谱数据,通过`getByteTimeDomainData()`或`getFloatFrequencyData()...

    微信小程序开发之录音机 音频播放 动画实例 (真机可用)

    - 文中提到的中间的麦克风图标是一个帧动画,是通过JavaScript控制图片显示和隐藏实现的。开发者可以使用CSS3的动画或者微信小程序提供的`wx.createSelectorQuery`和`wx.createAnim`接口来创建动画效果。 - 当用户...

    微信小程序仿微信录音界面.rar

    本项目“微信小程序仿微信录音界面”专注于实现与微信原生录音界面相似的话筒动画效果,以提供给用户熟悉且流畅的操作感受。下面我们将深入探讨这个话题,解析其中涉及的关键技术和实现步骤。 首先,我们需要了解...

    android 仿微信界面

    在Android中,可以使用`AnimationDrawable`类来创建帧动画。 2. 实现步骤: - 首先,将帧图片放入项目的资源文件夹中,如`res/drawable`。 - 创建一个XML文件(如`open_animation.xml`)在`res/anim`目录下,定义...

    微信打飞机图片、音频资源

    这可能涉及到SVG矢量图或者序列帧动画,通过逐帧播放来形成连续的动态效果。此外,飞机击中敌人、升级、释放特殊技能等重要事件,往往也会有特定的动画设计,以强化游戏的节奏感和成就感。 再来说说“音频资源”。...

    微信飞机大战素材

    3. **动画序列**:飞机的飞行、攻击、爆炸等动作通常通过序列帧动画实现。这些序列帧图片组合成动画,通过编程控制播放速度和顺序,使得游戏更具动态感。 4. **物理碰撞检测**:游戏中的飞机和子弹之间的碰撞检测是...

    微信小游戏素材,免费分享了

    而"Spritesheet"是将多个动画帧组合在一起的图像文件,便于在游戏中进行高效的动画处理,减少了加载时间和内存占用。 对于微信小游戏开发者来说,这些素材可以用于创建各种各样的游戏场景、角色和交互元素。例如,...

    Python-用python实现的微信飞机大战

    Python通过帧动画技术可以实现游戏中的动态效果,比如飞机移动、爆炸、子弹飞行等。这通常涉及到定时器和图像序列的切换。 此外,游戏的状态管理也很关键。飞机大战游戏有多个状态,如开始、游戏进行、暂停、结束等...

    仿微信设计的源代码

    在源码中,你可以学习到如何使用Android的Animation API,包括属性动画、帧动画等,以及如何通过第三方库如Lottie实现更复杂的SVG动画。 6. 第三方库集成:为了提高开发效率,开发者通常会引入各种第三方库,如...

    html5微信招聘信息动画切换代码.zip

    在招聘信息动画切换的场景中,HTML5可能用到了`&lt;section&gt;`、`&lt;article&gt;`等语义化标签来组织内容,以及`&lt;audio&gt;`、`&lt;video&gt;`元素用于播放可能包含的音频或视频介绍。同时,HTML5的离线存储特性(如localStorage)也...

    非常好玩的微信小游戏源码

    1. **微信小游戏API**:微信为小游戏提供了一套丰富的API接口,包括画布操作、音频处理、网络通信、用户授权、社交分享等功能。例如,`wx.createSelectorQuery()`用于选择并获取节点信息,`wx.createCanvasContext()...

Global site tag (gtag.js) - Google Analytics