android中小火箭动态喷射动画的简单实现
2014-09-15 15:01
1906 查看
在实现android火箭喷射时,比较难的一点就是既让火箭有火苗喷射,又要使火箭加速上升,所以感觉实现起来有些麻烦,但是发现了一种新的方法,可以让动画再次动(当然由于直接给动画加动画我没试过,所以不知道能不能那样做)。废话不多说,下面简单说下我的实现过程。
动画效果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/09/c0ea544961fbfce23ccfe6df225f4a6f)
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);
}
}
动画效果如下:
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简单动画旋转案例
- Java之简单的图片动态显示(实现类似GIF动画效果)
- Android动态加载XML文件及控件来简单实现QQ好友印象的功能
- Android数字动态显示,仿支付宝app效果简单的实现。字数从0-x!!!
- Android超简单实现listview上下拉伸回弹动画效果
- 实现Android简单动画旋转案例
- [Android][UI]模拟器启动界面动画效果的简单实现
- Android动画效果Animation之Tween实现简单动画
- Android实现简单移动动画
- Android漂浮动态效果的简单实现
- Android成长之路-实现简单动画
- Android 通过Animate硬编码实现简单的平移、旋转、缩放及透明度动画过程
- Android Graphics 学习(1)----播放gif动画简单的实现
- Android成长之路-实现简单动画
- android 简单动画实现
- Android中一个视图弹出动画的简单实现
- 纯css3无js实现的Android Logo(有简单动画)
- 实现Android简单动画旋转案例
- android,侧滑栏SlidingLayout、ViewPager实现画廊、简单用viewpager实现画廊、圆形图片、简单的跑马灯动画效果、可拖拽的弹簧式水泡动画集合
- Android 属性动画实现一个简单的PopupWindow