android中小火箭动态喷射动画的简单实现

在实现android火箭喷射时,比较难的一点就是既让火箭有火苗喷射,又要使火箭加速上升,所以感觉实现起来有些麻烦,但是发现了一种新的方法,可以让动画再次动(当然由于直接给动画加动画我没试过,所以不知道能不能那样做)。废话不多说,下面简单说下我的实现过程。 

动画效果如下:

动画



















1. 首先是实现一个帧动画,在res目录下新建一个目录anim,然后新建如下xml文件。

<?xml version="1.0" encoding="utf-8"?>
<!-- 
	根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
	根标签下,通过item标签对动画中的每一个图片进行声明
	android:duration 表示展示所用的该图片的时间长度
 -->
<animation-list
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:oneshot="false"
  >
  	<item android:drawable="@drawable/hjone" android:duration="50"></item>
  	<item android:drawable="@drawable/hjtwo" android:duration="50"></item>
  	<item android:drawable="@drawable/hjthree" android:duration="50"></item>	
</animation-list>

2.把这个动画以背景的形式添加到要显示的ImageView中,在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" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:src="@anim/animation" />

</RelativeLayout>
3.接下来就可以在mainactivity.java代码实现了,具体过程如下:

package com.example.animation;


import android.os.Bundle;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.view.animation.Animation.AnimationListener;
import android.widget.ImageView;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;

public class MainActivity extends Activity {
	private AnimationDrawable animationDrawable;
	private ImageView imageView;
	final Animation traslation = new TranslateAnimation(0, 0, 0, -1000);
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
		start();
	}
	private void start() {
		// TODO Auto-generated method stub
		animationDrawable=(AnimationDrawable) imageView.getDrawable();  
		animationDrawable.start();
		traslation.setDuration(800);
		traslation.setInterpolator(new AccelerateInterpolator());
		imageView.startAnimation(traslation);
		traslation.setAnimationListener(new AnimationListener() {

			@Override
			public void onAnimationStart(Animation arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onAnimationRepeat(Animation arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onAnimationEnd(Animation arg0) {
				// TODO Auto-generated method stub
				imageView.setVisibility(View.GONE);
			}
		});
	}
	private void initView() {
		// TODO Auto-generated method stub
		imageView=(ImageView)findViewById(R.id.image);
		imageView.setImageResource(R.anim.animation);
	}
	
}



猜你喜欢

转载自blog.csdn.net/youxia007ya/article/details/39292887