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:” ...
随机推荐
- Lander-Waterman model
参考: Lander-Waterman Model 这个模型是鸟枪法测序和基因组装的最基本的理论模型,它揭示了测序深度与覆盖度之间的关系. 该模型回答了一个最基本的问题:How many reads ...
- AngularJS的$watch用法
$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEqua ...
- loadrunner将参数文件转换为UTF-8编码
在使用loadrunner进行参数化的时候,对于有些信息,比如地址.人名等,很多时候需要传入中文,但是有的时候会碰到字符编码不对导致脚本出错. 下面介绍两种loadrunner中可以使用的编码转化为U ...
- LR录制Flex+Web,登录功能之登录密码出错的处理
在LR中录制好更改密码脚本,Controller中使用少量用户进行:单用户多迭代.多用户单迭代.多用户多迭代,运行正常,于是使用490Vuser+2iteration修改980个用户的密码,部分 Vu ...
- CSS中加号、星号及其他符号的作用
在理想世界里,正确的CSS应该在任何支持CSS的浏览器里工作良好.不幸的是, 我们并不是生活在理想的世界里,浏览 器们布满了BUG和不一致.创建一个跨浏览器并且显示一致的页面,CSS开发者必须想尽办法 ...
- ajax和sap以及网络安全
1.sap(single page applaction)一个页面通过众多ajax请求完成的一个app 优点是:减少页面跳转,UI公用部分的重复加载 缺点: 1.ajax过多的请求,对服务器性能有所 ...
- rpm 软件安装
安装 vi 软件 rpm q查询 a全部软件 e 卸载 i 安装 v 显示进度 h 以#显示 首先确定软件时候安装 rpm 实现软件的安装 卸载 升级 查询等 1)查询是否已经安装过 rpm -qa ...
- 1. Two Sum I & II & III
1. Given an array of integers, return indices of the two numbers such that they add up to a specific ...
- <c:forEach>循环list,一个表格两列数据
参考: http://zhidao.baidu.com/link?url=apG5dUmW7RjB5eOYKSWOWdKd7nxFpkDO4n3i8R6MWYKl7E2JC1OCtPILF4G4EUO ...
- win7/8/10安装过程中将动态磁盘转为basic
在分区界面运行Shift+F10 在命令窗口运行Diskpart list diskpart select disk n(n为磁盘号) clean convert xxx PS:xxx代表要转换的结果 ...