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);
	}
	
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章