<Android 基础(二十五)> Frame Animation
简介
Frame Animation, 逐帧动画,通过定义一系列的Drawable对象来实现动画效果,可以用来作为视图的背景。
Frame Animation在代码中体现为AnimationDrawable对象,可以通过xml文件快创建,放在在/res/drawable/目录下,设置为视图背景后,调用start()方法即可执行逐帧动画。
XML文件
Tags:
< animation-list > 作为父节点,代表Animation Drawable
< item >作为子节点,代表逐帧动画内容,一张一张图片
Attributes:
| 属性 | 含义 |
|---|---|
| android:oneshot=”false | true” |
| android:variablePadding=”false | true” |
| android:visible=”false | true” |
| android:drawable=”@drawable/xxxxx” | item图片资源 |
| android:duration=”xxxxx” | drawable播放时间,单位ms |
Res:
/res/drawable/{folder}
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selected"
android:oneshot="true"
android:variablePadding="false"
android:visible="true">
<item android:drawable="@drawable/ic_action_add" android:duration="500"/>
<item android:drawable="@drawable/ic_action_anchor" android:duration="500"/>
<item android:drawable="@drawable/ic_action_alarm" android:duration="500"/>
<item android:drawable="@drawable/ic_action_amazon" android:duration="500"/>
<item android:drawable="@drawable/ic_action_ac" android:duration="500"/>
</animation-list>
Coding
使用XML资源
imageView.setBackgroundResource(R.drawable.frame_anim);//设置背景
Drawable bgDrawable = imageView.getBackground();//获取背景
if(bgDrawable instanceof AnimationDrawable) {
((AnimationDrawable) bgDrawable).start();//如果为AnimationDrawable则执行动画
}
纯代码实现
***
imageView.setBackground(createAnimationDrawable());//设置背景
Drawable bg = imageView.getBackground();
if(bg instanceof AnimationDrawable) {
((AnimationDrawable) bg).start();//开始动画
}
***
private AnimationDrawable createAnimationDrawable() {
AnimationDrawable animationDrawable = new AnimationDrawable();
animationDrawable.addFrame(getResources().getDrawable(R.drawable.ic_action_add), 500);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.ic_action_anchor), 500);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.ic_action_alarm), 500);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.ic_action_amazon), 500);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.ic_action_ac), 500);
animationDrawable.setOneShot(false);
animationDrawable.setVisible(true,true);
return animationDrawable;
}
效果图
<Android 基础(二十五)> Frame Animation的更多相关文章
- Android动画效果之Frame Animation(逐帧动画)
前言: 上一篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画),今天来总结下Android的另外一种动画Frame ...
- Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)
1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...
- Android 动画——Frame Animation与Tween Animation
很多手机应用的引导页都是动画的,添加动画后的应用画面会更加生动灵活,今天博主也学习了Android中Animation的使用,下面来总结下. android中的Animation分为两种,一种是Fr ...
- Frame animation
[Frame animation] An animation defined in XML that shows a sequence of images in order (like a film) ...
- 我的Android进阶之旅------>Android之动画之Frame Animation实例
============================首先看看官网上关于Frame animation的介绍================================ 地址:http://de ...
- Android基础夯实--重温动画(二)之Frame Animation
心灵鸡汤:天下事有难易乎,为之,则难者亦易矣:不为,则易者亦难矣. 摘要 当你已经掌握了Tween Animation之后,再来看Frame Animation,你就会顿悟,喔,原来Frame Ani ...
- Resetting Frame Animation
最近在做个小项目的时候,需要用到帧动画.对应着某种状态,该动画可以停止和再次播放.我们知道,通过函数 someAnimObj.start() someAnimObj.stop() 可以很容易地实现 ...
- 详解Android动画之Frame Animation(转)
在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现. ...
- 详解Android动画之Frame Animation
在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现. ...
随机推荐
- 尺寸单位em,rem,vh,vw
这几天做demo,看了网上教程有用到尺寸单位vh,vw, 这些单位不是很熟悉,所以上网上找了些资料来认识了这些不认识的单位 1.em 在做手机端的时候经常会用到的做字体的尺寸单位 说白了 em就相当于 ...
- 【bzoj3489】 A simple rmq problem k-d树
由于某些原因,我先打了一个错误的树套树,后来打起了$k-d$.接着因不明原因在思路上被卡了很久,在今天中午蹲坑时恍然大悟...... 对于一个数字$a_i$,我们可以用一组三维坐标$(i,pre,nx ...
- openerp学习笔记 视图(tree\form)中隐藏按钮( 创建、编辑、删除 ),tree视图中启用编辑
视图(tree\form)中隐藏按钮( 创建.编辑.删除 )create="false" edit="false" delete="false&quo ...
- js设置全局变量 ajax中赋值
js设置全局变量,在ajax中给予赋值赋值不上问题解决方案 方案一. //在全局或某个需要的函数内设置Ajax异步为false,也就是同步. $.ajaxSetup({async : false}); ...
- SpringBoot学习之自动装配
在前面使用SSM集成时,我们可以使用注解实现无配置化注入,但是这种依赖被进行“人工干预了的”,换句话就是说我们手动进行装配,那么此时还没有达到SpringBoot这种自动装配的效果,那么究竟Sprin ...
- win10下用Linux搭建python&nodejs开发环境
Win10下用自带Linux系统搭建开发环境 Win10下用自带Linux系统搭建开发环境启用Linux老版本(win10 1709之前):新版本(win10 1709之后)卸载linux老版本新版本 ...
- Apache Hadoop 源码阅读(陆续更新)
不多说,直接上干货! 总之一句话,这些都是hadoop-2.2.0的源代码里有的.也就是不光只是懂理论,编程最重要,还是基本功要扎实啊.... 在hadoop-2.2.0的源码里,按Ctrl + Sh ...
- numpy.linalg.norm(求范数)
1.linalg=linear(线性)+algebra(代数),norm则表示范数. 2.函数参数 x_norm=np.linalg.norm(x, ord=None, axis=None, keep ...
- [转] Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程
点击这里查看原文 译者:GuiltyMan 本文由 Linux公社翻译组 原创翻译 Linux公社 诚意奉献 更多请访问此处博客网站 VMware workstation 是一个可以进行桌面操作的虚 ...
- springboot-14-自定义properties文件值注入javaBean中
被这个问题困扰了好几天.... 在spring中, 从资源文件向bean中注入值非常简单, 只需要properties文件被spring加载, 然后在被spring管理的类写响应的属性, 然后 @Va ...