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(); } }); } }
完整代码见附件。
相关推荐
每次动画帧更新时,检查音频的播放进度,相应地改变按钮的动画状态。 6. **兼容性处理**: - 不同浏览器对音频和动画的支持程度不同,需要进行兼容性检查,例如使用`canPlayType`检测音频格式是否支持,确保动画在...
- Android提供了多种实现UI动画的方式,如帧动画(`AnimationDrawable`)、属性动画(`ObjectAnimator`)以及视图动画(`Animation`类)。微信可能使用了属性动画来实现平滑的过渡效果,通过改变按钮图像的透明度、...
微信小程序开发之录音机音频播放动画实例需要考虑多个技术点,包括录音机实现、音频播放实现、动画实现和文件存储实现。只有正确地实现这些技术点,才能实现一个完整的录音机音频播放动画实例。
这些动画可以通过帧动画或属性动画来实现,确保流畅自然。 此外,为了使动画更加逼真,我们还可以添加音效。Android提供了MediaPlayer类来播放音频资源,可以预先准备一个红包打开的声音文件,在动画执行时同步播放...
在这个关键帧动画中,我们定义了三个阶段:0%、50%和100%。在0%时,波浪颜色较浅,高度为10%,并且顶部有25%的内边距,模拟波浪的起始状态。在50%时,颜色变深,高度达到100%,内边距为0,表示波浪到达最高点。最后...
CSS3动画允许开发者创建平滑的过渡效果、关键帧动画,而JavaScript动画则提供了更灵活的控制,可以实现复杂的交互。这些动画可能包括滑动过渡、淡入淡出、旋转、缩放等各种视觉效果,提升页面的吸引力。 "手动滑屏...
在这个"html5仿微信聊天语音发送话筒录音动画特效.7z"压缩包中,我们可以看到一个实现微信聊天语音发送功能的实例,它包含了话筒录音动画效果,以及与之相关的源码和图片素材。 首先,这个特效的核心是利用HTML5的...
这通常通过在每一帧更新Canvas上的图像来实现,利用`requestAnimationFrame`来确保平滑的动画过渡。 录音过程中,`AnalyserNode`可以获取音频的频谱数据,通过`getByteTimeDomainData()`或`getFloatFrequencyData()...
- 文中提到的中间的麦克风图标是一个帧动画,是通过JavaScript控制图片显示和隐藏实现的。开发者可以使用CSS3的动画或者微信小程序提供的`wx.createSelectorQuery`和`wx.createAnim`接口来创建动画效果。 - 当用户...
本项目“微信小程序仿微信录音界面”专注于实现与微信原生录音界面相似的话筒动画效果,以提供给用户熟悉且流畅的操作感受。下面我们将深入探讨这个话题,解析其中涉及的关键技术和实现步骤。 首先,我们需要了解...
在Android中,可以使用`AnimationDrawable`类来创建帧动画。 2. 实现步骤: - 首先,将帧图片放入项目的资源文件夹中,如`res/drawable`。 - 创建一个XML文件(如`open_animation.xml`)在`res/anim`目录下,定义...
这可能涉及到SVG矢量图或者序列帧动画,通过逐帧播放来形成连续的动态效果。此外,飞机击中敌人、升级、释放特殊技能等重要事件,往往也会有特定的动画设计,以强化游戏的节奏感和成就感。 再来说说“音频资源”。...
3. **动画序列**:飞机的飞行、攻击、爆炸等动作通常通过序列帧动画实现。这些序列帧图片组合成动画,通过编程控制播放速度和顺序,使得游戏更具动态感。 4. **物理碰撞检测**:游戏中的飞机和子弹之间的碰撞检测是...
而"Spritesheet"是将多个动画帧组合在一起的图像文件,便于在游戏中进行高效的动画处理,减少了加载时间和内存占用。 对于微信小游戏开发者来说,这些素材可以用于创建各种各样的游戏场景、角色和交互元素。例如,...
Python通过帧动画技术可以实现游戏中的动态效果,比如飞机移动、爆炸、子弹飞行等。这通常涉及到定时器和图像序列的切换。 此外,游戏的状态管理也很关键。飞机大战游戏有多个状态,如开始、游戏进行、暂停、结束等...
在源码中,你可以学习到如何使用Android的Animation API,包括属性动画、帧动画等,以及如何通过第三方库如Lottie实现更复杂的SVG动画。 6. 第三方库集成:为了提高开发效率,开发者通常会引入各种第三方库,如...
在招聘信息动画切换的场景中,HTML5可能用到了`<section>`、`<article>`等语义化标签来组织内容,以及`<audio>`、`<video>`元素用于播放可能包含的音频或视频介绍。同时,HTML5的离线存储特性(如localStorage)也...
1. **微信小游戏API**:微信为小游戏提供了一套丰富的API接口,包括画布操作、音频处理、网络通信、用户授权、社交分享等功能。例如,`wx.createSelectorQuery()`用于选择并获取节点信息,`wx.createCanvasContext()...