Android一帧一帧的动画

简介:
我在网上找 Android动画的时候发现,很多都是我上一篇哪个样子的文章。很少有一帧一帧的动画。请大家不要忘记传统动画。
 
 
下面就给个具体的XML例子,来定义一帧一帧的动画:
上面的XML就定义了一个Frame Animation,其包含6帧动画,6帧动画中分别应用了drawable中的6张图片:ball1,ball2,.....ball6 每帧动画持续50毫秒。

然后我们将以上XML保存在res/anim/文件夹下,命名为simple_animation.xml,显示动画的代码:
  1. <? xml  version ="1.0"  encoding ="UTF-8" ?> 
    < LinearLayout 
    android:layout_width ="fill_parent" 
    android:layout_height ="fill_parent" 
    android:orientation ="vertical" 
    xmlns:android ="http://schemas.android.com/apk/res/android" 
    > 
    < ImageView    
         android:id ="@+id/imageView" 
         android:layout_width ="wrap_content" 
         android:layout_height ="wrap_content" 
         android:gravity ="center" 
         android:layout_centerHorizontal ="true" 
    /> 
    < TextView 
    android:layout_width ="fill_parent" 
    android:layout_height ="wrap_content" 
    android:text ="aaaaaaaaaaaaaaaaaaaaa" 

    /> 
    </ LinearLayout > 
 
 

Java 代码
public  class AlarmAlert  extends Activity 


    @Override 
     protected  void onCreate(Bundle savedInstanceState)    
    { 
         super.onCreate(savedInstanceState); 
setContentView(R.layout.mylayout); 

ImageView img=(ImageView)findViewById(R.id.imageView); 
img.setBackgroundResource(R.anim.simple_animation); 

MyAnimationRoutine mar=  new MyAnimationRoutine(); 
MyAnimationRoutine2 mar2=  new MyAnimationRoutine2(); 
Timer t= new Timer( false); 
t.schedule(mar,100); 
Timer t2= new Timer( false); 
t2.schedule(mar2,5000); 

}    
class MyAnimationRoutine  extends TimerTask{ 
@Override 
public  void run(){ 
    ImageView img=(ImageView)findViewById(R.id.imageView); 
    AnimationDrawable frameAnimation=(AnimationDrawable) 
    img.getBackground(); 
    frameAnimation.start(); 
     


class MyAnimationRoutine2  extends TimerTask{ 
@Override 
public  void run() 

    ImageView img=(ImageView) findViewById(R.id.imageView); 
    AnimationDrawable frameAnimation=(AnimationDrawable) 
    img.getBackground(); 
    frameAnimation.stop(); 

}

代码运行的结果6张图片按照顺序的播放一次.有一点需要强调的是:启动Frame Animation动画的不能在OnCreate()中,因为在OnCreate()进行内部控制,所以我建子类,开始和停止方法。不然OnCreate()中启动动画,就只能看到第一张图片。
 
 
 
 
 
 
 
下面,阅读Android SDK中对AnimationDrawable的介绍,有个简单的了解:

AnimationDrawable
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot() 
Void setOneShot(boolean oneshot)
获取oneshot属性
设置oneshot属性
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs)

增加、获取帧动画
Drawable getFrame(int index) 获取某帧的Drawable资源
void addFrame(Drawable frame,int duration) 为当前动画增加帧(资源,持续时长)
动画控制
void start() 开始动画
void run() 外界不能直接掉调用,使用start()替代
boolean  isRunning() 当前动画是否在运行
void stop() 停止当前动画
AnimationDrawable
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot() 
Void setOneShot(boolean oneshot)
获取oneshot属性
设置oneshot属性
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs)

增加、获取帧动画
Drawable getFrame(int index) 获取某帧的Drawable资源
void addFrame(Drawable frame,int duration) 为当前动画增加帧(资源,持续时长)
动画控制
void start() 开始动画
void run() 外界不能直接掉调用,使用start()替代
boolean  isRunning() 当前动画是否在运行
void stop() 停止当前动画
本文转自luojinghappy 51CTO博客,原文链接:http://blog.51cto.com/luojinghappy/326048,如需转载请自行联系原作者
相关文章
|
7月前
|
Android开发
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等(三)
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等
|
7月前
|
Android开发
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等(一)
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等
|
19天前
|
Java Android开发
Android开发之使用OpenGL实现翻书动画
本文讲述了如何使用OpenGL实现更平滑、逼真的电子书翻页动画,以解决传统贝塞尔曲线方法存在的卡顿和阴影问题。作者分享了一个改造后的外国代码示例,提供了从前往后和从后往前的翻页效果动图。文章附带了`GlTurnActivity`的Java代码片段,展示如何加载和显示书籍图片。完整工程代码可在作者的GitHub找到:https://github.com/aqi00/note/tree/master/ExmOpenGL。
21 1
Android开发之使用OpenGL实现翻书动画
|
7月前
|
Android开发
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等(二)
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等
|
3月前
|
XML 开发工具 Android开发
Android动画效果-更新中
Android动画效果-更新中
59 1
|
4月前
|
XML Android开发 数据格式
[Android]动画
[Android]动画
33 0
|
4月前
|
API Android开发 开发者
【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
68 1
|
4月前
|
XML 小程序 Java
【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)
【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)
28 0
|
4月前
|
XML Java Android开发
Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
70 0
|
4月前
|
XML Java Android开发
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
47 0