引言:

Android提供的动画有两种分别为TweenAnimation和FrameAnimation。Tween动画主要实现了渐变,缩放,平移以及旋转的效果。

Frame动画即逐帧动画,就是将动画分解成关键帧图片连续形成动画,或者说在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。本片博客讲述的就是逐帧动画。逐帧动画的优势在于具有较强的灵活性,几乎可以完成任何想要的动画效果,但是也是复杂的效果对为文件的压力越大。


逐帧动画的使用依赖于AnimationDrawable类的支持。它位于"android.graphics.drawable.AnimationDrawable"包下,是Drawable的间接子类。它主要用来创建一个逐帧动画,并且可以对帧进行拉伸,把它设置为View的背景即可使用AnimationDrawable.start()方法播放。由于逐帧动画是一帧帧的播放图片所以需要添加帧图片,Android提供了两种添加的方式,java代码创建以及xml文件引用资源文件。

1,采用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="@drawable/loading_1"        android:duration="300"/>    <item        android:drawable="@drawable/loading_2"        android:duration="300"/></animation-list>
每一个item就是一帧图片,duration为每一帧持续的时间。在Java代码中:

loadingImg.setBackgroundResource(R.anim.animation_list);AnimationDrawable anim = (AnimationDrawable)loadingImg.getBackground();anim.start();
将配置文件设置为想要的View的背景,获得AnimationDrawable对象调用他的start()方法启动动画。通过stop()方法来终止动画。

2,使用java设置动画资源

其实和使用xml的方式一样,没有什么太大的区别。

                AnimationDrawable frameAnim =new AnimationDrawable();frameAnim.addFrame(getResources().getDrawable(R.drawable.loading_1), 300);frameAnim.addFrame(getResources().getDrawable(R.drawable.loading_2), 300);frameAnim.setOneShot(false);loadingImg.setBackgroundDrawable(frameAnim);frameAnim.start();
setOneShot()方法用来设计动画是否循环播放。false为循环播放。


3,下面是AnimationDrawable的常用的方法

void start():开始播放逐帧动画。
void stop():停止播放逐帧动画。
void addFrame(Drawable frame,int duration):为AnimationDrawable添加一帧,并设置持续时间。
int getDuration(int i):得到指定index的帧的持续时间。
Drawable getFrame(int index):得到指定index的帧Drawable。
int getNumberOfFrames():得到当前AnimationDrawable的所有帧数量。
boolean isOneShot():当前AnimationDrawable是否执行一次,返回true执行一次,false循环播放。
boolean isRunning():当前AnimationDrawable是否正在播放。
void setOneShot(boolean oneShot):设置AnimationDrawable是否执行一次,true执行一次,false循环播放






更多相关文章

  1. 聊聊android界面适配
  2. android中自定义checkbox大小和图片
  3. Android(安卓)中 AsyncTask 的使用
  4. android ANR处理方法
  5. Android(安卓)Service 两种编写及应用
  6. android多线程开发
  7. Android面试题整理-3
  8. android 消息传递机制进阶EventBus的深入探究
  9. Android(安卓)方法数 65k 问题

随机推荐

  1. Android(安卓)TabLayout导航条属性的设置
  2. Android(安卓)检测键盘是否显示及隐藏键
  3. Android(安卓)Studio 的 gradle 插件升级
  4. Android(安卓)调用第三方浏览器打开
  5. android-仿QQtab
  6. Android(安卓)之经典源码
  7. 让Android不播放关机动画,而是显示一个关
  8. android studio Build 设置简介
  9. Android(安卓)Wifi模块分析(六)
  10. Android——TabHost(标签容器)相关知识总结