转载请注明出处: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

【Android界面实现】Drawable Animation 使用介绍的更多相关文章

  1. Android动画Drawable Animation

    Drawable Animation是逐帧动画,那么使用它之前必须先定义好各个帧.我们可以通过代码定义,也可以使用xml文件定义,一般使用后者.如下: <?xml version="1 ...

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

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

  3. Android动画View Animation与Drawable Animation

    Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...

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

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

  5. Android animation学习笔记之view/drawable animation

    前一章中总结了android animation中property animation的知识和用法,这一章总结View animation和Drawable animation的有关知识: View ...

  6. Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)

    1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...

  7. android 界面设计基本知识Ⅲ

    本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...

  8. Android中的Drawable资源

    在Android应用中,常常会用到Drawable资源,比如图片资源等,在Android开发中我们是用Drawable类来Drawable类型资源的. Drawable资源一般存储在应用程序目录的\r ...

  9. Android基础_1 四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service(服务),Content Provider(内容提供者),BroadcastReceiver(广播接收器). 一.四大基本组件 Acti ...

随机推荐

  1. sqlserver 计算数据库时间差

    介绍:datediff(datepart,startdate,enddate) 返回间隔datepart 的数 SELECT datediff(yy,'2010-06-1 10:10',GETDATE ...

  2. OpenVPN记住账号密码自动连接

    说明:在增加了证书+账号密码之后,安全性确实提高了,但是面临的问题也有,每次重启时必须输入账号密码才能连接,这也造成了无人值守的问题. 解决: 1.在Client的client.ovpn末尾添加一行a ...

  3. 让Code First下的数据库的迁移更加简单

    Code First给我们的程序开发带了很多便利,之前的版本中一个比较不大方便的地方是数据库迁移,麻烦不说,往往还和上下文相关,在不同的版本之间的数据库进行迁移还很容易失败,并且一旦失败还不大容易找到 ...

  4. andriod 启动日历

    Intent intent=new Intent();intent.setComponent(new ComponentName("com.android.calendar", & ...

  5. java数据库编程——读写LOB、可滚动和可更新的结果集、元数据

    java 数据库编程 1. 读写LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其它数据.在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB. 要读取LOB,需要 ...

  6. TensorFlow环境搭建及安装教程

    1.安装虚拟环境virtualenv相关配置(创建了python3.5的环境) 2.http://docs.nvidia.com/cuda/cuda-installation-guide-linux/ ...

  7. LeetCode——3Sum &amp; 3Sum Closest

    3Sum 题目 Given an array S of n integers, are there elements a,b,c in S such that a + b + c = 0? Find ...

  8. 简单的混淆ID

    public class TestfuzzId { public static void main(String[] args) { int id = 123456; int p = id^Integ ...

  9. ElasticSearch位置搜索

    ElasticSearch位置搜索 学习了:https://blog.csdn.net/bingduanlbd/article/details/52253542 学习了:https://blog.cs ...

  10. ​Mac触控板常用的手势操作

    ​Mac触控板常用的手势操作 学习了:http://topbook.cc/archives/151   一个手指直接点击,类似Windows中鼠标左键功能,同时在苹果Safari等浏览器中,这个手势还 ...