您的位置:首页 > 移动开发 > Android开发

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

2014-09-15 15:01 1906 查看
在实现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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 动画 火箭