转载请注明出处: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. centos安装lnmp

    安装ssh yum install openssh-server ====================== 查看SSH是否安装. ◆输入命令:rpm -qa | grep ssh 注:若没安装SS ...

  2. Oracle Extended Tracing

      Definitions A trace file is a file that contains diagnostic data used to investigate problems. Als ...

  3. 使用Git代替FTP进行虚拟主机的代码管理

    为什么要使用Git代替FTP的原因: 由于本人菜鸟+穷屌,玩不起VPS和其他大牌的云主机,所以呢就只能在景安(这不是广告..)申请了免费的虚拟主机,就想着自己玩玩而已,免费的嘛,空间流量什么的就不讨论 ...

  4. rbac控制下无法创建poddisruptionbudgets

    先通过下面命令找到具体的命名空间的rbac kubectl get role --all-namespaces kubectl get role aaa -o yaml 然后倒入到yaml文件中添加 ...

  5. Flask如何使用https?

    1 安装python 的 openssl 的类库 pip install pyOpenSSL 2 在 Flask 的代码中可以直接使用,注意ssl_context的值必须是adhoc from fla ...

  6. django 模板实现换行

    django中的模板并不能实现自动换行,遇到/n的话不会自动换行,毕竟/n是python里面的换行符,html怎么可能认识呢? 那如何实现在模板中换行呢 <p> {{ article.co ...

  7. rsa实现js前台加密java后台解密

    前段时间写了一个rsa前台加密到后台用java解密,下面共享下实现思路: 准备工作:第三方包是必须的 bcprov-jdk15on-148.jar commons-codec-1.7.jar comm ...

  8. 【DataStrcutre】Introduction and description of Binary Trees

    [Definitions] Here is the recursive definition of a binary tree: A binary tree is either the empty s ...

  9. 一个tomcat中部署多个项目

    在各自的项目web.xml中添加 <context-param> <param-name>webAppRootKey</param-name> <param- ...

  10. android带有文字的图片按钮的两种实现方式

    android带有文字的图片按钮的两种实现方式 1). TextView对Button用相对布局,这要要求按钮的背景图片要留下空白位置给文字.这种方式开发比较简单,适合做一些风格一致的Button. ...