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:” ...
随机推荐
- java String 的+操作导致的问题
不说别的先看代码截图: 结果如下: 很好奇为什么String对象的null加上了""就等于"null"字符串了,先给点资料看看: 这个是我找的一个人博客上的截图 ...
- unity自带寻路Navmesh入门教程(三)
继续介绍NavMesh寻路的功能,接下来阿赵打算讲一下以下两个例子,先看看完成的效果: 第一个例子对于喜欢DOTA的朋友应该很熟悉了,就是不同小队分不同路线进攻的寻路,红绿蓝三个队伍分别根据三条路 ...
- jenkins+git+maven搭建自动化部署项目环境
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...
- MySQL DCL 整理
DCL(Data Control Language)数据库控制语言 授权,角色控制等GRANT 授权REVOKE 取消授权
- Sql Server R2还有备份数据库错误
错误信息描述 该数据库是运行版本10.50.1600的服务器上备份的.该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该被份的服务器上还原该数据, 或者使用与此服务器兼容的备份(M ...
- C#中 Request, Request.params , Request.querystring , Request.Form 区别 与联系用法
C#中 Request, Request.params , Request.querystring , Request.Form 区别 与联系用法? Request.params , Request ...
- Asp.net项目路径获取方法【转】
获取项目完整的绝对路径string path = System.AppDomain.CurrentDomain.BaseDirectory.ToString();string path = Serve ...
- MVC3 新建项目
一.安装工具 二.新建项目 step1:新建MVC3项目 打开新建项目窗口,在“已安装的模板”列表中选择“Web”,在右侧应用程序模板列表中选择“ASP.NET MVC3 Web应用程序”,修改项目名 ...
- 安卓xml文件中常见的问题
1.EditText显示不完全
- 为Node.js编写组件的几种方式
本文主要备忘为Node.js编写组件的三种实现:纯js实现.v8 API实现(同步&异步).借助swig框架实现. 关键字:Node.js.C++.v8.swig.异步.回调. 简介 首先介绍 ...