android 帧动画的实现及图片过多时OOM解决方案(一)
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true" > <item
android:drawable="@drawable/animation_1"
android:duration="1000"/>
<item
android:drawable="@drawable/animation_2"
android:duration="100"/>
<item
android:drawable="@drawable/animation_3"
android:duration="100"/>
<item
android:drawable="@drawable/animation_4"
android:duration="100"/>
<item
android:drawable="@drawable/animation_5"
android:duration="100"/>
</animation-list>
注意:
二、方法中调用,如下:
mImageView.setImageResource(R.drawable.animation_list);
animationDrawable = (AnimationDrawable) mImageView.getDrawable();
animationDrawable.start();
当然,也可以在方法中动态设置动画的播放,调用如下方法:
mImageView.setImageResource(R.drawable.animation_list);
animationDrawable = (AnimationDrawable) mImageView.getDrawable();
if(animationDrawable.isRunning()){ //当前AnimationDrawable是否正在播放
animationDrawable.stop(); //停止播放逐帧动画。
}
animationDrawable.start(); //开始播放逐帧动画。
三、OOM解决方案(一):
images = new int [42];
images[0] = R.drawable.animation_0; //动画开始时的动画
images[1] = R.drawable.animation_1;
images[2] = R.drawable.animation_2;
images[3] = R.drawable.animation_3;
......
images[40] = R.drawable.animation_40;
images[41] = R.drawable.animation_41; //动画结束时的画面 durations = new int[40] ;
durations[0] = 200; //事件触发后多长时间开始动画
durations[1] = 100;
durations[2] = 200;
......
durations[40] = 300;
public class myAnimation{
private ImageView mImageView; //播方动画的相应布局
private int[] mImageRes;
private int[] durations;
public myAnimation(ImageView pImageView, int[] pImageRes,
int[] durations) {
this.mImageView = pImageView;
this.durations = durations;
this.mImageRes= pImageRes;
mImageView.setImageResource(mImageRes[1]);
play(1);
}
private void play(final int pImageNo) {
mImageView.postDelayed(new Runnable() { //采用延迟启动子线程的方式
public void run() {
mImageView.setImageResource(mImageRes[pImageNo]);
if (pImageNo == mImageRes.length-1)
return;
else
play(pImageNo + 1);
}
}, durations[pImageNo-1]);
}
}
new myAnimation(ImageView, images,durations);
android 帧动画的实现及图片过多时OOM解决方案(一)的更多相关文章
- android 帧动画,补间动画,属性动画的简单总结
帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...
- android 帧动画
首先在res/drawable/name1.xml/定义一组图片集合: <?xml version="1.0" encoding="utf-8"?> ...
- android帧动画,移动位置,缩放,改变透明度等动画讲解
1.苦逼的需求又来了,需要实现一些动画效果,第一个想到的是播放gif图片,但是这样会占包的资源,并且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...
- 如何解决Android帧动画出现的内存溢出
这几天在做动画的时候,遇到了一个OOM的问题,特此记录下来. 普通实现 实现一个帧动画,最先想到的就是用animation-list将全部图片按顺序放入,并设置时间间隔和播放模式.然后将该drawab ...
- Android帧动画实现,防OOM,比原生动画集节约超过十倍的资源
2015年项目接到一个需求,实现一个向导动画,这个动画一共六十张图片,当时使用的是全志A33的开发(512的内存),通过使用Android的动画集实现,效果特别卡顿,然后想到这样的方式来实现,效果非常 ...
- android帧动画,移动位置,缩放,改变透明度等动画解说
1.苦逼的需求又来了,须要实现一些动画效果,第一个想到的是播放gif图片,可是这样会占包的资源,而且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...
- Android 帧动画使用
帧动画 使用一系列不同的图片,然后像一卷胶卷一样按顺序播放,这是一种传统的动画,也可称为帧动画.也可以比喻为像一卷胶卷一样按顺序播放. 播放起来,有点像在看gif图. 本文介绍使用AnimationD ...
- Android帧动画笔记
创建drawable资源文件,选择animation-list<?xml version="1.0" encoding="utf-8"?><a ...
- [android] 帧动画和补间动画
逐帧显示一张图片,连起来成为动画 在res/drawable/目录下,创建一个xxx.xml的文件 添加<animation-list>节点,设置是否循环android:oneshot:” ...
随机推荐
- jQuery 表格删除,添加行
var colsNum = 4; 1,$(document),ready(function () { $.("#id1").parent().after('<tr class ...
- .net 导出Excel功能
将DataSet对象导出成Excel文档 一.不带格式控制 void btnExport_Click(object sender, EventArgs e) { IList<string> ...
- MyEclipse 不能编译Java类到Classes文件夹
设置Java Build Path -> Resource -> Default output folder 到一个新的文件夹XXXproject/WebContent/WEB-INF/c ...
- OpenGL利用模板测试实现不规则裁剪
本文是原创文章,如需转载,请注明文章出处 在游戏开发中,经常会有这样的需求:给定一张64x64的卡牌素材,要求只显示以图片中心为圆点.直径为64的圆形区域,这就要用到模板测试来进行不规则裁剪. 实现不 ...
- psp进度(11月25号-31号)
本周psp进度 11月25号 内容 开始时间 结束时间 打断时间 净时间 处理数据集 9:27 11:34 12m 115m 11月27号 内容 开始时间 结束时间 打断时间 净时间 scr ...
- 比CMD更强大的命令行WMIC
先决条件:a. 启动Windows Management Instrumentation服务,开放TCP135端口.b. 本地安全策略的“网络访问: 本地帐户的共享和安全模式”应设为“经典-本地用户以 ...
- vue的transition过渡效果
需要4个类: *-enter: 进入的开始状态, *-enter-active: 进入的结束状态, *-leave: 离开的开始状态, *-leave-active: 离开的结束状态 vue-rout ...
- 51nod 1240 莫比乌斯函数
题目链接:51nod 1240 莫比乌斯函数 莫比乌斯函数学习参考博客:http://www.cnblogs.com/Milkor/p/4464515.html #include<cstdio& ...
- 原生js通过prottype写的一个简单拖拽
<!DOCTYPE html> <head> <meta charset="utf-8"/> <title></title&g ...
- jqueryGannt用法
jqueryGannt主要用于甘特图的展示,直接上步骤 1.下载 jquery.min.js js/jquery.fn.gantt.js 的js ,可以自己去github上搜官方的. 其他的要上传对应 ...