Android动画示例
Android提供了大量用于动画开发的类和接口。大部分类和接口都包含在 android.animation 包中。
Android动画使您能够在运行时更改对象的属性和行为。在Android中有多种方式可以进行动画操作。
AnimationDrawable 类提供了启动和停止动画的方法。甚至可以使用基于时间的动画。
让我们来看一个简单的Android动画示例。
activity_main.xml
只需要一个视图。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<View
/>
</RelativeLayout>
只有图片查看器。
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/anm"
>
</ImageView>
主Activity类
package com.javatpoint.animation;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.widget.ImageView;
public class MainActivity extends Activity {
ImageView anm;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logo);
anm = (ImageView)findViewById(R.id.anm);
anm.setBackgroundResource(R.drawable.animation);
// the frame-by-frame animation defined as a xml file within the drawable folder
/*
* NOTE: It's not possible to start the animation during the onCreate.
*/
}
public void onWindowFocusChanged (boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
AnimationDrawable frameAnimation =
(AnimationDrawable) anm.getBackground();
if(hasFocus) {
frameAnimation.start();
} else {
frameAnimation.stop();
}
}
}
您需要在res/drawable-hdpi目录下创建animation.xml文件。
您需要有很多图片。在这里,我们使用了14个图片,这14个图片都位于res/drawable-mdpi目录中。
<?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/frame0" android:duration="120" />
<item android:drawable="@drawable/frame1" android:duration="120" />
<item android:drawable="@drawable/frame2" android:duration="120" />
<item android:drawable="@drawable/frame3" android:duration="120" />
<item android:drawable="@drawable/frame4" android:duration="120" />
<item android:drawable="@drawable/frame5" android:duration="120" />
<item android:drawable="@drawable/frame6" android:duration="120" />
<item android:drawable="@drawable/frame7" android:duration="120" />
<item android:drawable="@drawable/frame8" android:duration="120" />
<item android:drawable="@drawable/frame9" android:duration="120" />
<item android:drawable="@drawable/frame10" android:duration="120" />
<item android:drawable="@drawable/frame11" android:duration="120" />
<item android:drawable="@drawable/frame12" android:duration="120" />
<item android:drawable="@drawable/frame13" android:duration="120" />
<item android:drawable="@drawable/frame14" android:duration="120" />
<item android:drawable="@drawable/frame14" android:duration="120" />
<item android:drawable="@drawable/frame13" android:duration="120" />
<item android:drawable="@drawable/frame12" android:duration="120" />
<item android:drawable="@drawable/frame11" android:duration="120" />
<item android:drawable="@drawable/frame10" android:duration="120" />
<item android:drawable="@drawable/frame9" android:duration="120" />
<item android:drawable="@drawable/frame8" android:duration="120" />
<item android:drawable="@drawable/frame7" android:duration="120" />
<item android:drawable="@drawable/frame6" android:duration="120" />
<item android:drawable="@drawable/frame5" android:duration="120" />
<item android:drawable="@drawable/frame4" android:duration="120" />
<item android:drawable="@drawable/frame3" android:duration="120" />
<item android:drawable="@drawable/frame2" android:duration="120" />
<item android:drawable="@drawable/frame1" android:duration="120" />
<item android:drawable="@drawable/frame0" android:duration="120" />
</animation-list>