動畫·Activity

一、MainActivity.java

(一)onCreate()

Animation welcomeAnimation = AnimationUtils.loadAnimation(this, R.anim.welcome);//從res文件夾的anim文件夾中取出動畫資源

welcomeTextView.setAnimation(welcomeAnimation);

welcomeAnimation.setAnimationListener(new AnimationListener() {//設(shè)置動畫的監(jiān)聽事件,達(dá)到控制動畫的目的

public void onAnimationStart(Animation animation) {}//動畫開始時執(zhí)行的操作

public void onAnimationRepeat(Animation animation) {}//當(dāng)動畫重復(fù)播放時執(zhí)行的操作

public void onAnimationEnd(Animation animation) {//結(jié)束時執(zhí)行的操作

Intent intent = new Intent(MainActivity.this,RocketShowActivity.class);//結(jié)束時執(zhí)行頁面跳轉(zhuǎn)

startActivity(intent);}});

(二)private void findViews()

變量也只有控件 TextView:welcomeTextView

二、RocketShowActivity.java

(一)變量:

ImageView:bombImageView、rocketImageView

Button:rocketFireButton、shootButton

幀動畫 AnimationDrawable:rocketFireAnimation、moonBombAnimation、changeFlyAnimation

補(bǔ)間動畫 Animation:rocketShootAnimation

SoundPool: soundPool

(二)onCreate(Bundle savedInstanceState)

findViews();

getAnimation();

setlistener();

setAnimationListener();

loadSound();

(三)private void loadSound()

soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 1);

soundPool.load(RocketShowActivity.this, R.raw.rock_fast, 1);

SoundPool()參數(shù)1:同時播放的音頻的數(shù)量 參數(shù)2:播放的音頻的類型 參數(shù)3:播放音頻的質(zhì)量

load()參數(shù)1:上下文 參數(shù)2:音頻的資源ID 參數(shù)3:優(yōu)先級

在需要播放的地方添加.play()方法。

(四)private void setAnimationListener()

1.rocketShootAnimation.setAnimationListener

(1)public void onAnimationStart(Animation animation)

(2)public void onAnimationRepeat(Animation animation)

(3)public void onAnimationEnd(Animation animation)

rocketImageView.setVisibility(View.GONE);//把控件移走

bombImageView.setVisibility(View.VISIBLE);//要播放動畫的控件顯示可見

soundPool.play(1, 1, 1, 1, 0, 1);

moonBombAnimation.start();//播放動畫

moonBombAnimation.setOneShot(true);//只播放一遍

幀動畫無法設(shè)置監(jiān)聽,設(shè)置計(jì)時器已達(dá)到監(jiān)聽的目的

int duration = 0;

for (int i = 0; i < moonBombAnimation.getNumberOfFrames(); i++) {

duration = duration + moonBombAnimation.getDuration(i);}

Handler handler = new Handler();//通過handler新建線程刷新

handler.postDelayed(new Runnable() {

public void run() {

bombImageView.setBackgroundResource(R.drawable.change_animation);

changeFlyAnimation = (AnimationDrawable) bombImageView.getBackground();

changeFlyAnimation.start();

shootButton.setText("再來一次");}}, duration);? }});

(五)private void setlistener()

1.rocketFireButton.setOnClickListener()

參數(shù)里新建匿名類new OnClickListener() ,在匿名類自帶的void onClick(View v)的方法中實(shí)現(xiàn)代碼

if (rocketFireAnimation.isRunning()) {//如果動畫在執(zhí)行

Toast.makeText(RocketShowActivity.this, "已點(diǎn)火成功,請發(fā)射", 1).show();//則顯示吐司,參數(shù)依次為:上下文、顯示的內(nèi)容、隔多長時間顯示(秒)。用show函數(shù)顯示

} else {rocketFireAnimation.start();} //播放幀動畫

2.shootButton.setOnClickListener

if (rocketFireAnimation.isRunning()) {? //如果在運(yùn)行

rocketImageView.startAnimation(rocketShootAnimation); //補(bǔ)間動畫的播放

} else if (changeFlyAnimation != null && changeFlyAnimation.isRunning()) {

rocketImageView.setVisibility(View.VISIBLE);//通過控件ImageView設(shè)置動畫可見。在xml中設(shè)置的是不可見

changeFlyAnimation.stop();//幀動畫的停止

bombImageView.setBackgroundResource(R.drawable.bomb_animation);

bombImageView.setVisibility(View.GONE *);//見下方注釋

} else {Toast.makeText(RocketShowActivity.this, "請先點(diǎn)火再發(fā)射", 1).show();}

VISIBLE:設(shè)置控件可見 ;INVISIBLE:設(shè)置控件不可見;GONE:設(shè)置控件隱藏。而INVISIBLE和GONE的主要區(qū)別是:當(dāng)控件visibility屬性為INVISIBLE時,界面保留了view控件所占有的空間;而控件屬性為GONE時,界面則不保留view控件所占有的空間。

(六)private void getAnimation()

獲取Animation,幀動畫和補(bǔ)間動畫不同。幀動畫 先告訴ImageViewBackgroundResource,從R文件里引入animation動畫;再把ImageView的background賦值給AnimationDrawable。補(bǔ)間動畫 直接用AnimationUtils.loadAnimation( ) 給Animation賦值。

rocketImageView.setBackgroundResource(R.drawable.rocket_fire_animation);//幀動畫

rocketFireAnimation = (AnimationDrawable) rocketImageView.getBackground();

bombImageView.setBackgroundResource(R.drawable.bomb_animation);

moonBombAnimation = (AnimationDrawable) bombImageView.getBackground();

rocketShootAnimation = AnimationUtils.loadAnimation(this,R.anim.rocket_fly_animation);//補(bǔ)間動畫

(七)private void findViews().

找控件:bombImageView(R.id.roc_boom_img)、rocketFireButton(R.id.roc_rocket_fire_btn)、rocketImageView(R.id.roc_rocket_img)、shootButton(R.id.roc_shoot_btn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容