一、简介

Frame Animation(AnimationDrawable对象):帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果。

必须以<animation-list>为根元素,以<item>表示要轮换显示的图片,duration属性表示各项显示的时间。XML文件要放在/res/anim/或者/res/animator目录下。

二、代码实现

在frame_animation.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="@mipmap/lw0" android:duration="50" /><item android:drawable="@mipmap/lw1" android:duration="50" /><item android:drawable="@mipmap/lw2" android:duration="50" /><item android:drawable="@mipmap/lw3" android:duration="50" /><item android:drawable="@mipmap/lw4" android:duration="50" /><item android:drawable="@mipmap/lw5" android:duration="50" /><item android:drawable="@mipmap/lw6" android:duration="50" /><item android:drawable="@mipmap/lw7" android:duration="50" /><item android:drawable="@mipmap/lw8" android:duration="50" /><item android:drawable="@mipmap/lw9" android:duration="50" />
</animation-list>

drawable是绑定图片,duration是设置每张图片持续时间

主页面的xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.lw.frameanimation_demo.MainActivity"><ImageViewandroid:id="@+id/myImageView"android:layout_centerInParent="true"android:layout_width="150dp"android:layout_height="150dp"android:src="@anim/frame_animation"/><Buttonandroid:layout_centerHorizontal="true"android:id="@+id/myButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Open/Stop"/></RelativeLayout>

MainActivity代码

public class MainActivity extends AppCompatActivity {private ImageView imageView;private Button button;private AnimationDrawable animationDrawable = null;private void initView(){imageView = (ImageView) findViewById(R.id.myImageView);button = (Button) findViewById(R.id.myButton);//mageView.setBackgroundResource(R.anim.frame_animation);animationDrawable = (AnimationDrawable) imageView.getDrawable();}private void initCtrl(){button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//每次从头开始播放if(!animationDrawable.isRunning()){//是否执行一次animationDrawable.setOneShot(false);animationDrawable.start();}else{animationDrawable.setOneShot(false);animationDrawable.stop();}}});}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initCtrl();}//进入的时候播放// SDK中提到,不要在onCreate()中调用start(),因为AnimationDrawable还没有完全跟Window相关联,如果想要界面显示时就开始动画的话,可以在onWindowFoucsChanged()中调用start()。@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);if (hasFocus) {animationDrawable.setOneShot(false);animationDrawable.start();}}
}

其中:

 SDK中提到,不要在onCreate()中调用start(),因为AnimationDrawable还没有完全跟Window相关联,如果想要界面显示时就开始动画的话,可以在onWindowFoucsChanged()中调用start()。
源码下载:源码

Android动画详解之Android 动画属性和实现方法之帧动画(二)相关推荐

  1. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  2. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  3. android rotate 动画,Android RotateAnimation详解

    RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度. 1.RotateAnimation(fromDegrees, toDegrees) [默 ...

  4. Android Drawable 详解

    Android Drawable 详解 @(Technical)[Android, Drawable, StateListDrawable, LayerDrawable, AnimationDrawa ...

  5. android常用api大全,Android API详解大全.pdf

    Android API详解大全 Android -- TextView 一.TextView的API 1.1 结构 java.lang.Object ↳ android.view.View ↳ and ...

  6. android service是什么,Android service是什么 Android service详解

    Android service是什么 Android service详解 时间:2017-04-06     来源:Android开发学习网 什么是Android Service? service是A ...

  7. Android @Override详解

    转载自  Android @Override详解 Android的开发者对@Override肯定是非常熟悉,不管是自己的代码中还是书上都会出现,但是他是什么意思呢?如下: @Override是伪代码, ...

  8. Android 属性动画 详解

    Android 属性动画 详解 Android动画类型: View Animation(即所谓的Tween Animation补间动画):View Animation相当简单,不过只能支持简单的缩放. ...

  9. android动画详解二 属性动画原理

    property动画是一个强大的框架,它几乎能使你动画任何东西.你可以定义一个动画来改变对象的任何属性,不论其是否被绘制于屏幕之上.一个属性动画在一定时间内多次改变一个属性(对象的一个字段)的值.要动 ...

最新文章

  1. 激光雷达和V2X技术
  2. 这个曾一票难求的AI大会,现在可以抢购早鸟票了丨MEET 2021
  3. 各个大厂的机器学习平台概述
  4. Linux下samba服务速度很慢的问题
  5. VC程序初始化隐藏窗体
  6. 服务器禁止修改目录,目录服务器限制 (Sun Java System Directory Server Enterprise Edition 6.2 发行说明)...
  7. Python学习笔记之用户输入
  8. Hive 1.1.0 某些字段的查询结果为NULL
  9. 为什么说 Rust 是编程的未来?
  10. python 下载文件-python实现下载文件的三种方法_python
  11. CSS外边距合并(塌陷/margin越界)
  12. Chrome浏览器安装Axure插件教程
  13. 数据库ASM管理-ASM文件
  14. Linux系统压力测试工具stress
  15. /etc/login.defs配置文件详解
  16. 前端---HTML制作百度首页
  17. c++基础知识的学习--函数探幽
  18. 0元永久授权,etl作业批量调度必备软件 Taskctl Free应用版
  19. 2020计算机考研初试考试先后顺序,2020考研初试考试时间及科目安排
  20. CS5263设计原理图|CS5263设计DP转HDMI电路参考|CS5263中文说明

热门文章

  1. 华南师范大学计算机学院保研,广东高校保研率|进了广东这些大学,离保研也近了一步...
  2. 【python】百度关键词排名查询实现
  3. C语言之自定义函数的实现
  4. mysql 查看slave状态_解读show slave status 命令判断MySQL复制同步状态
  5. 寻找我心中的产品经理
  6. 【算法学习】四 二分法查找(折半法或者折半查找)
  7. JS-打开新窗口(window.open)/关闭窗口(window.close)
  8. 怎么找回计算机用户名密码怎么办,忘记了登录路由器的用户名与密码怎么办?...
  9. linux清除文件后df还是满的,Linux系统下用du和df命令清除大文件的方法
  10. 股票中的杠杆原理是指什么?