转载自:http://blog.csdn.net/dawanganban/article/details/24348227
这一篇来使用逐帧动画和补间动画来实现一个小例子,首先我们来看看Android中的补间动画。
Android中使用Animation代表抽象的动画类,该类包括下面几个子类:
AlphaAnimation:透明改变动画。
ScaleAnimation:大小缩放动画。
TranslateAnimation:位移变化动画。
RotateAnimation:旋转动画。
我们下面使用位移动画和逐帧动画来实现这个小例子,先看看运行效果:
蝴蝶挥动翅膀的逐帧动画文件:
界面布局文件:
具体逻辑及位移动画:
- package com.example.butteryfly;
- import java.util.Timer;
- import java.util.TimerTask;
- import android.app.Activity;
- import android.graphics.drawable.AnimationDrawable;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.Display;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.animation.TranslateAnimation;
- import android.widget.ImageView;
- public class MainActivity extends Activity {
- private float curX = 0;
- private float curY = 30;
- private float nextX = 0;
- private float nextY = 0;
- private int windowW = 0;
- private int windowH = 0;
- private ImageView imageView;
- Handler handler = new Handler(){
- public void handleMessage(android.os.Message msg) {
- if(msg.what == 0x123){
- if(nextX > windowW || nextY > windowH){
- curX = nextX = 0;
- }else{
- nextX += 8;
- }
- nextY = curY + (float) (Math.random() * 20 - 10);
- TranslateAnimation anim = new TranslateAnimation(curX, nextX, curY, nextY);
- curX = nextX;
- curY = nextY;
- anim.setDuration(200);
- imageView.startAnimation(anim);
- }
- };
- };
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- imageView = (ImageView) findViewById(R.id.butterfly);
- Display display = getWindowManager().getDefaultDisplay();
- windowW = display.getWidth();
- windowH = display.getHeight();
- final AnimationDrawable butterfly = (AnimationDrawable) imageView.getBackground();
- imageView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- butterfly.start();
- new Timer().schedule(new TimerTask() {
- @Override
- public void run() {
- handler.sendEmptyMessage(0x123);
- }
- }, 0, 200);
- }
- });
- }
- }