android 火箭动画,利用动画模拟火箭发射场景

AAffA0nNPuCLAAAAAElFTkSuQmCC

1.布局文件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:background="@drawable/rocket_bg"

>

android:id="@+id/iv_num"

android:visibility="gone"

android:layout_height="50dp"

android:layout_width="80dp"

android:layout_gravity="center"

android:background="@drawable/num_anim"

/>

android:onClick="load"

android:layout_width="50dp"

android:layout_height="30dp"

android:layout_gravity="right"

android:text="装载"

android:layout_marginTop="150px"

android:background="@drawable/btn_normal"

>

android:onClick="fire"

android:layout_width="50dp"

android:layout_height="30dp"

android:layout_gravity="right"

android:text="点火"

android:layout_marginTop="30px"

android:background="@drawable/btn_normal"

>

android:onClick="send"

android:layout_width="50dp"

android:layout_height="30dp"

android:layout_gravity="right"

android:text="发射"

android:layout_marginTop="30px"

android:background="@drawable/btn_normal"

>

android:visibility="gone"

android:id="@+id/iv_01"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="-30px"

android:class="lazyload" src="https://img-blog.csdnimg.cn/2022010707591537684.png" data-original="@drawable/rocket2"

android:background="@drawable/fire_anim"

/>

3.帧动画xml文件

3.1 num_main.xml

android:oneshot="true"

>

android:drawable="@drawable/number5" android:duration="1000"

>

android:drawable="@drawable/number4" android:duration="1000"

>

android:drawable="@drawable/number3" android:duration="1000"

>

android:drawable="@drawable/number2" android:duration="1000"

>

android:drawable="@drawable/number1" android:duration="1000"

>

3.2 fire_main.xml

android:oneshot="false"

>

android:drawable="@drawable/rocket1" android:duration="100"

>

android:drawable="@drawable/rocket2" android:duration="100"

>

android:drawable="@drawable/rocket3" android:duration="100"

>

android:drawable="@drawable/rocket4" android:duration="100"

>

android:drawable="@drawable/rocket5" android:duration="100"

>

android:drawable="@drawable/rocket6" android:duration="100"

>

2.MainActivity.java

package com.example.day016_ex01;

import android.os.AsyncTask;

import android.os.Bundle;

import android.animation.AnimatorSet;

import android.animation.ObjectAnimator;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.AsyncTaskLoader;

import android.graphics.drawable.AnimationDrawable;

import android.view.Menu;

import android.view.View;

import android.widget.ImageView;

import android.widget.Toast;

public class MainActivity extends Activity {

static int load=0,fire=1,send=2;

//记录倒计时的时间

int time=0;

ImageView iv_fire,iv_num;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv_fire=(ImageView) findViewById(R.id.iv_01);

iv_num=(ImageView) findViewById(R.id.iv_num);

}

public void load(View v){

//装载

iv_fire.setVisibility(View.VISIBLE);

load++;

}

public void fire(View v){

AnimationDrawable num=(AnimationDrawable) iv_num.getBackground();

if(load==fire){

iv_num.setVisibility(View.VISIBLE);

//点火倒计时

num.start();

int count=num.getNumberOfFrames();

for(int i=0;i

time+=num.getDuration(i);

}

new MyTask().execute();

}else{

Toast.makeText(this,"您还没有加载火箭呢!",0).show();

}

}

@SuppressLint("NewApi")

public void send(View v){

if(load==1&&fire==send){

ObjectAnimator tranX=ObjectAnimator.ofFloat

(iv_fire,"translationY",0,-400);

tranX.setDuration(2000);

ObjectAnimator scaleX=ObjectAnimator.ofFloat

(iv_fire,"scaleX",1.0f,0.5f);

ObjectAnimator scaleY=ObjectAnimator.ofFloat

(iv_fire,"scaleY",1.0f,0.5f);

scaleX.setDuration(2000);

scaleY.setDuration(2000);

AnimatorSet set=new AnimatorSet();

set.playTogether(tranX,scaleX,scaleY);

set.start();

}else{

Toast.makeText(this,"您加载火箭了吗?点火了吗?", 0).show();

}

}

private class MyTask extends AsyncTask{

@Override

protected Void doInBackground(Void... params) {

try {

Thread.sleep(time);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

@Override

protected void onPostExecute(Void result) {

// TODO Auto-generated method stub

super.onPostExecute(result);

iv_num.setVisibility(View.GONE);

fire++;

AnimationDrawable fire=(AnimationDrawable)

iv_fire.getBackground();

//点火启动

fire.start();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值