Android实现帧动画,以及出场时的动画
最近有个小需求,在数据上传的时候加一个上传的动画,然后就寻思着自己写一个帧动画
上传开始的时候调用动画,上传结束通知容器将其删除(这个方法应该不会太耗内存),然后吐槽下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实现帧动画,以及出场时的动画的更多相关文章
- Android设置Activity启动和退出时的动画
业务开发时遇到的一个小特技,要求实现Activity启动时自下向上弹出,退出时自上向下退出. 此处不关注启动和退出时其他Activity的动画效果,实现方法有两种: 1.代码方式,通过Activity ...
- android 通过帧动画方式播放Gif动画
注意:经过本人测试,这个方法很耗内存, 图片一多就崩了.慎用 <1>用工具(photoshop或者FireWorks)将GIF动画图片分解成多个GIF静态图片,然后保存在res\drawa ...
- Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation
程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...
- Android使用帧动画内存溢出解决方法
Android使用帧动画内存溢出解决方法https://blog.csdn.net/daitu_liang/article/details/52336015https://blog.csdn.net/ ...
- Android 自定义帧动画
Android 自定义帧动画 Android L : Android Studio 帧动画 和gif图片类似,顺序播放准本好的图片文件:图片资源在xml文件中配置好 将图片按照预定的顺序一张张切换,即 ...
- Android 杂谈---帧动画
Android中的动画有 帧动画 属性动画 补间动画 大体思路 1.需要定义存放每一帧的xml文件,放在drawable文件夹下 设置图片路径和duration,以及shot属性,false---&g ...
- 一个使用openGL渲染的炫丽Android动画库二(碎片化曲面动画)
续一个使用openGL渲染的炫丽Android动画库 MagicSurfaceView v1.1.0发布, 新增碎片化曲面动画 地址:https://github.com/gplibs/android ...
- Android开发 - 掌握ConstraintLayout(十一)复杂动画!如此简单!
介绍 本系列我们已经介绍了ConstraintLayout的基本用法.学习到这里,相信你已经熟悉ConstraintLayout的基本使用了,如果你对它的用法还不了解,建议您先阅读我之前的文章. 使用 ...
- 第三部分:Android 应用程序接口指南---第四节:动画和图形---第一章 属性动画及动画与图形概述
第1章 属性动画及动画与图形概述 Android提供了一系列强大的API来把动画加到UI元素中,以及绘制自定义的2D和3D图像中去.下面的几节将综述这些可用的API以及系统的功能,同时帮你做出最优的选 ...
随机推荐
- 10分钟学习pandas
10 Minutes to pandas This is a short introduction to pandas, geared mainly for new users. You can se ...
- 该字符串未被识别为有效的 DateTime
开发语言C#,System.Data.SQLite.dll驱动. SQLserver数据库转换为SQLite数据库时,日期类型默认转为DATETIME. 执行查询SQL语句,数据为空(查询不到数据时) ...
- Web Word和Excel
暂时收集点资料备用 Excel http://www.cnblogs.com/downmoon/archive/2011/05/30/2063258.html http://www.cnblogs.c ...
- ADB server didn't ACK
当我们通过eclipse开发Android应用时,会连接真机会使用模拟器进行仿真,有时候启动失败,会提示这样的错误. 工具/原料 Eclipse CMD命令窗口 方法/步骤 首先通过CMD启动adb服 ...
- Linux 文件操作监控inotify功能及实现原理【转】
转自:http://blog.chinaunix.net/uid-26585427-id-5012973.html 1. inotify主要功能 它是一个内核用于通知用户空间程序文件系统变化的机制. ...
- 不安装oracle客户端,用plsql连接oracle
常用的Oracle开发的工具有SQL Developer和PL/SQL Developer,个人感觉前者虽然跨平台性优于后者,但比较大(大于300M)占用资源,而且用户体验也一般,而后者相对就小很多( ...
- Linux常用命令小结(续)
20. mysql mysql --host=127.0.0.1 --port=3306 --database=test --user=test --password=test --default-c ...
- ElasticSearch学习记录
中文api 什么是集群? 集群(cluster) >由一个或多个节点组织在一起. >由一个唯一的名字标识,默认为"elasticsearch". 节点(node) &g ...
- oracle wrapped 代码解密工具 unwraper
Oracle中的Wrap 功能是为了不让别人看到函数/存储过程的SQL源码的明文, 作为技术宅,有的时候想看源码但是看不到的那种心情是可以理解的, 发一个简单易用的 Oracle wrapped 解码 ...
- mysql xml 参数
drop PROCEDURE IF EXISTS tt;CREATE PROCEDURE tt(para text,OUT para1 DECIMAL(18, 6),OUT para2 DECIMAL ...