Android一帧一帧的动画
然后我们将以上XML保存在res/anim/文件夹下,命名为simple_animation.xml,显示动画的代码:
-
<? 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 >
{
@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()中启动动画,就只能看到第一张图片。
|
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() | 停止当前动画 |