转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

(眼下仅仅能用在View对象上的动画效果的实现有两种,一种就是上一篇的View Animation,即补间动画,剩下的一种。就是这一篇要介绍的,Drawable Animation,即帧动画。

在最新版本号的API中,出现了一个更加强大的方式,PropertyAnimation,即属性动画,稍后将会介绍)

Drawable animation同意我们一张一张的载入Drawable资源。这是一种传统的动画方式,通过一系列不同图片的顺序播放,能够制造出电影一样的效果。AnimationDrawable类是实现这样的动画效果的基类。

用AnimationDrawable提供的API,我们当然能够在代码中定义想要展示的每一帧的图片,可是使用xml来列出我们想要展现的图片的方式更加的方便。假设採用xml的方式,我们须要在res/drawable文件以下创建,然后在xml文件中面指定我们要展示的每一帧的图片资源和持续的时间。

XML文件由<animation-list>作为根节点元素。在根节点里面。是一系列的<item>的子节点,在子节点里面定义了要展示的图片和每一帧持续的时间。

以下是一个使用XML文件定义Drawable Animation的一个实例。

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="true"><item android:drawable="@drawable/rocket_thrust1" android:duration="200" /><item android:drawable="@drawable/rocket_thrust2" android:duration="200" /><item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

这个动画仅仅会展示3帧的动画。通过设置android:oneshot属性为true,动画仅仅会播放一次然后就停止。而且会一直显示最后一张图片。假设我们设置成false,那么动画就会一直循环播放。我们把这个文件保存在/res/drawable/rocket_thrust.xml,然后我们就能够给一张View对象加入动画的背景图片。以下是一个Activity的演示样例,我们给一个Imageview加入了动画效果,然后当点击时候,动画開始播放。

AnimationDrawable rocketAnimation;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);rocketImage.setBackgroundResource(R.drawable.rocket_thrust);rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}public boolean onTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_DOWN) {rocketAnimation.start();return true;}return super.onTouchEvent(event);
}

有一点很重要。就是AnimationDrawable的start()方法不能够在Activity的onCreate()调用,由于这个时候。AnimationDrawable可能还没有全然的绑定到Window上。假设我们想立即播放动画。我们能够在onWindowFocusChanged()方法里面调用,由于这种方法是在window已经获取到焦点之后回调的,能够保证已经绑定结束。

假设想了解很多其它关于XML的语法或者是可选的tag和属性值,请參考Animation Resources。

原文地址:http://developer.android.com/guide/topics/graphics/drawable-animation.html#top

转载于:https://www.cnblogs.com/llguanli/p/8696506.html

【Android界面实现】Drawable Animation 使用介绍相关推荐

  1. Android 动画之一 Drawable Animation —— 逐帧(Frame)动画

    这几天打算把动画的基础都捋一下,就像我们已经知道的,动画大致有三类:(property动画,Tween动画.Frame动画),今天开始,我们就依次来看一下,他们都是怎么使用的吧^^. 今天先来看一下逐 ...

  2. Android 属性动画Property Animation(中)

    Android 属性动画Property Animation(上)介绍了属性动画的概念以及相关的类和接口,本篇来看下具体肿么使用. ValueAnimator ValueAnimator指定整形.浮点 ...

  3. Android Animation学习(一) Property Animation原理介绍和API简介

    Android Animation学习(一) Property Animation介绍 Android Animation Android framework提供了两种动画系统: property a ...

  4. android动画之帧动画(drawable animation)和补间动画(view animation)

    帧动画 drawable animation使用比较简单,而且支持市场上所以API版本,下面简单贴下代码.帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 直接代码贴上 x ...

  5. Android 界面介绍与绘制优化

    Andorid用户界面框架 Android的用户界面框架(Android UI Framework)采用MVC(Model-View-Controller)模型,为用户界面提供了处理用户输入的控制器( ...

  6. Android界面特效全汇总

    (一)Activity 页面切换的效果 Android 2.0 之后有了 overridePendingTransition() ,其中里面两个参 数,一个是前一个 activity 的退出两一个 a ...

  7. Android界面特殊全汇总

    (一)Activity 页面切换的效果 Android 2.0 之后有了 overridePendingTransition() ,其中里面两个参 数,一个是前一个 activity 的退出两一个 a ...

  8. 从Android界面开发谈起(转)

    原文地址:http://blog.csdn.net/nieweilin/article/details/5967815 这篇文章没有打算有一个很好的逻辑去介绍android的某个方面,全盘大致上就是我 ...

  9. android开发重要控件,Android界面编程——Android基本控件

    Android界面编程 Android应用开发的一项重要内容就是界面开发.对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户. 作为一个程序员 ...

最新文章

  1. Android开发实践:掌握Camera的预览方向和拍照方向
  2. iOS12.1系统,nav自定义返回后,tabbar偏移问题记录
  3. .Net Core手撸一个基于Token的权限认证
  4. 发布在线文档【软件=业务+架构+流程+组织.pptx】
  5. 委托、Lambda表达式、事件系列07,使用EventHandler委托
  6. RocketMQ 顺序消费只消费一次 坑
  7. oracle小黑书,通读《C++ primer plus》—浅谈数组
  8. Pytorch---训练与测试时爆显存(out of memory)的一个解决方案(torch.cuda.empty_cache())
  9. apache2配置rewrite_module
  10. 变量的内部存储:引用和计数
  11. Android 系统签名实现的三种方式
  12. 微信僵尸粉源码php,清除微信僵尸粉工具源码
  13. web服务之源码编译安装LAMP
  14. java性能调优_Java性能调优常用手段
  15. TypeScript系列教程十一《装饰器》 -- reflect-metadata
  16. Xcelsius数据源概述
  17. SSM+图书馆电子文件资源管理 毕业设计-附源码091426
  18. 九度oj 题目1365:贝多芬第九交响曲
  19. Windows最佳Markdown编辑器
  20. 我国企业履行社会责任的措施

热门文章

  1. java fields是_一个快速生成R2.java中fields的插件
  2. web前端基础知识:html布局如何应用?
  3. style 字体加粗_第9篇 Qt Quick入门教程之基础(九)文本显示和字体
  4. python中怎样向字典中添加值_python的字典中,如何向指定路径添加值?
  5. python怎么弄成白色背景_使用PIL python将白色背景转换为透明背景
  6. 单元格内多个姓名拆分成一列_把订单按货品拆分成多行
  7. 交接文档怎么写_如何最快速的交接工作
  8. java流程控制both_java web面试题
  9. python 近期用到的基础知识汇总(主要是numpy和pytorch的相关矩阵变化函数)(一)
  10. 【Deep Learning 三】神经网络中的非线性激活函数之间的优缺点:sigmoid、tanh、ReLu、Leaky ReLu...