2015年项目接到一个需求,实现一个向导动画,这个动画一共六十张图片,当时使用的是全志A33的开发(512的内存),通过使用Android的动画集实现,效果特别卡顿,然后想到这种方式来实现,效果很流畅.然后写成开一个开源项目供大家参考

对比以下两种方式实现帧动画,使用相同的80张280x280的png图片执行动画,资源占用情况对比:

Android动画集实现: 内存占用56M左右

FrameAnimation实现: 内存占用4M左右

两者CUP占用都比较低,可忽略

代码下载:
https://github.com/ansen360/FrameAnimation

Sample效果:

一、Android动画集实现帧动画
  • 1 在drawable目录下创建动画集animalist.xml
<?xml version="1.0" encoding="utf-8"?>                         
  • 2 在布局文件ImageView中使用该drawable
<?xml version="1.0" encoding="utf-8"?>    
  • 3 在代码中调用,启动动画
    ImageView image = (ImageView) findViewById(R.id.image);    AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable();        animationDrawable.start();

动画启动系统资源占用情况如下:


手动触发GC,内存占用几乎没改变

二、FrameAnimation实现帧动画
  • 1 定义需要播放动画的资源文件;在arrays文件中定义资源,或者在代码中定义
<?xml version="1.0" encoding="utf-8"?>                @mipmap/c_1        @mipmap/c_2                @mipmap/circle_19        @mipmap/circle_20    

获取定义之后的资源数组(代码中可直接定义资源文件的数组,便可忽略上一步):

    private int[] getRes() {        TypedArray typedArray = getResources().obtainTypedArray(R.array.c);        int len = typedArray.length();        int[] resId = new int[len];        for (int i = 0; i < len; i++) {            resId[i] = typedArray.getResourceId(i, -1);        }        typedArray.recycle();        return resId;    }
  • 2 在代码中调用,启动动画
    ImageView image = (ImageView) findViewById(R.id.image);    FrameAnimation frameAnimation = new FrameAnimation(image, getRes(), 50, true);    frameAnimation.setAnimationListener(new FrameAnimation.AnimationListener() {        @Override        public void onAnimationStart() {            Log.d(TAG, "start");        }        @Override        public void onAnimationEnd() {            Log.d(TAG, "end");        }        @Override        public void onAnimationRepeat() {            Log.d(TAG, "repeat");        }    });

动画启动系统资源占用情况如下:


手动触发GC,内存占用有明显变化

博客地址

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android(安卓)扩展-对任意的属性做动画
  3. [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
  4. 基于 PhoneGap 与 Java 开发的 Android(安卓)应用的性能对比
  5. android 开发之动画Activity
  6. Android(安卓)动画之AlphaAnimation、ScaleAnimation应用详解
  7. Android(安卓)吸入动画效果详解
  8. Android(安卓)Animation 高手必读 之一 Tweened Animations 代码
  9. Android(安卓)Animation学习(五) ApiDemos解析:容器布局动画 Layout

随机推荐

  1. SQL SERVER 的SQL语句优化方式小结
  2. sql2005 create file遇到操作系统错误5拒
  3. SQL SERVER 删除重复内容行
  4. SQL Server 空值处理策略[推荐]
  5. 同一个sql语句 连接两个数据库服务器
  6. 数据库中的内容字段被挂马的替换方法 SQL
  7. SQL 返回期间内的所有日期
  8. 修复断电等损坏的SQL 数据库
  9. SQL 研究 相似的数据类型
  10. SQLServer 中.与::的区别