最近有个小需求,在数据上传的时候加一个上传的动画,然后就寻思着自己写一个帧动画

上传开始的时候调用动画,上传结束通知容器将其删除(这个方法应该不会太耗内存),然后吐槽下gif图片还是我自己一帧一帧从ps上取出来然后另存为png格式的,哎,奖励自己一下竟然这么全能

写帧动画之前需要写一个帧list,命名为upload_anim.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/s1"
android:duration="50" />
<item
android:drawable="@drawable/s2"
android:duration="50" />
<item
android:drawable="@drawable/s3"
android:duration="50" />
<item
android:drawable="@drawable/s4"
android:duration="50" />
<item
android:drawable="@drawable/s5"
android:duration="50" />
<item
android:drawable="@drawable/s6"
android:duration="50" />
<item
android:drawable="@drawable/s7"
android:duration="50" /> <item
android:drawable="@drawable/s8"
android:duration="50" />
<item
android:drawable="@drawable/s9"
android:duration="50" />
<item
android:drawable="@drawable/s10"
android:duration="50" />
<item
android:drawable="@drawable/s11"
android:duration="50" />
<item
android:drawable="@drawable/s12"
android:duration="50" />
</animation-list>

比如这个有12帧的动画资源文件,我们来看看他怎么使用,这里要讲下ImageVIew是可以播放如以上代码所示的帧list的

使用时我只需将以上的帧list当做Drawbale放在ImageView的资源来用即可,然后我们在获取到这个资源使其播放起来!就可以实现了,然后再加上ImageVIew的入场动画!完美

               ImageView imageView = new ImageView(context);

                animationIn = AnimationUtils.loadAnimation(context,R.anim.in);

                imageView.setAnimation(animationIn);

                imageView.setImageResource(R.drawable.upload_anim);

                final AnimationDrawable animationDrawable = (AnimationDrawable)  imageView.getDrawable();
animationDrawable.start();
ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
50,50); rlContentMain.addView(imageView,params);

注:上面有未声明的变量animationIn是Animation类型;rlContentMain是RelativeLayout类型为了放置动画的一个layout(我将这个动画放置在relativeLayout里然后加上动画,就有了点击然后动画的效果(*^__^*) ,设置params是为了控制动画资源的大小)

关键代码分析:使动画资源播放起来的关键代码就是标红的代码了,先定义一个AnimationDrawable然后其实例从imageVIew中get到,之后直接start()就可以播放起来

然后我还有R.anim.in这个是一个imageView进入时的动画,代码如下

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate
android:fromYDelta="-100%p"
android:duration="600"
/>
</set>

实现的是简单的位移动画,fromYdelta是  源码解释:Change in Y coordinate to apply at the start of the animation即为 要应用于动画的开头的 Y 坐标的变化;

这样就完成了

当然还有其他的动画比如渐变,加速等等

Android实现帧动画,以及出场时的动画的更多相关文章

  1. Android设置Activity启动和退出时的动画

    业务开发时遇到的一个小特技,要求实现Activity启动时自下向上弹出,退出时自上向下退出. 此处不关注启动和退出时其他Activity的动画效果,实现方法有两种: 1.代码方式,通过Activity ...

  2. android 通过帧动画方式播放Gif动画

    注意:经过本人测试,这个方法很耗内存, 图片一多就崩了.慎用 <1>用工具(photoshop或者FireWorks)将GIF动画图片分解成多个GIF静态图片,然后保存在res\drawa ...

  3. Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation

    程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...

  4. Android使用帧动画内存溢出解决方法

    Android使用帧动画内存溢出解决方法https://blog.csdn.net/daitu_liang/article/details/52336015https://blog.csdn.net/ ...

  5. Android 自定义帧动画

    Android 自定义帧动画 Android L : Android Studio 帧动画 和gif图片类似,顺序播放准本好的图片文件:图片资源在xml文件中配置好 将图片按照预定的顺序一张张切换,即 ...

  6. Android 杂谈---帧动画

    Android中的动画有 帧动画 属性动画 补间动画 大体思路 1.需要定义存放每一帧的xml文件,放在drawable文件夹下 设置图片路径和duration,以及shot属性,false---&g ...

  7. 一个使用openGL渲染的炫丽Android动画库二(碎片化曲面动画)

    续一个使用openGL渲染的炫丽Android动画库 MagicSurfaceView v1.1.0发布, 新增碎片化曲面动画 地址:https://github.com/gplibs/android ...

  8. Android开发 - 掌握ConstraintLayout(十一)复杂动画!如此简单!

    介绍 本系列我们已经介绍了ConstraintLayout的基本用法.学习到这里,相信你已经熟悉ConstraintLayout的基本使用了,如果你对它的用法还不了解,建议您先阅读我之前的文章. 使用 ...

  9. 第三部分:Android 应用程序接口指南---第四节:动画和图形---第一章 属性动画及动画与图形概述

    第1章 属性动画及动画与图形概述 Android提供了一系列强大的API来把动画加到UI元素中,以及绘制自定义的2D和3D图像中去.下面的几节将综述这些可用的API以及系统的功能,同时帮你做出最优的选 ...

随机推荐

  1. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  2. SVN提交时响应很慢,我是这样解决的。

    现象:使用TortoiseSVN提交文件时,弹出提交窗口,要等待30秒的样子,才开始工作,开始提交文件后速度还是很快的. 解决后提交文件几乎是秒杀. 解决办法 (我的电脑可以了,但还是有些同事的电脑没 ...

  3. c#控制台調用SSIS包互传值

    有时候不仅仅需要在内部执行package包,多数情况下,是需要在外部进行调用,比如,需要一个批处理或者控制台程序进行外部调用SSIS包,而往往这个包所配置的连接字符串是经过加密处理的,所以当外部调用S ...

  4. android源码中,在系统多媒体数据库中增加一个字段

    由于项目需求,在系统多媒体管理数据库里的存储图像文件的表中需要新增加一个字段,源码在:项目\packages\providers\MediaProvider\MediaProvider.java下,在 ...

  5. HTTP 和FTP 状态信息总结(留着自己用)

    HTTP 状态信息 HTTP 400 – 请求无效HTTP 401.1 – 未授权:登录失败HTTP 401.2 – 未授权:服务器配置问题导致登录失败HTTP 401.3 – ACL 禁止访问资源H ...

  6. Discuz!模板解析语法

    <!--{eval echo autostart("); }--> PHP中使用template()函数显示已存在模板 在Discuz!程序执行中可以通过 include tem ...

  7. divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句

    #!/usr/bin/env python a = 10/3 print(a) #divmod计算商与余数 r = divmod(10001,20) print(r) #eval可以执行一个字符串形式 ...

  8. Bootstrap_列表组

     一.基本列表组 列表组是Bootstrap框架新增的一个组件,可以用来制作列表清单.垂直导航等效果,也可以配合其他的组件制作出更漂亮的组件. <ul class="list-grou ...

  9. Hibernate 继承映射

    @Entity@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn()public class Animal ...

  10. Linux Shell 文本处理工具集锦 zz

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...