簡體   English   中英

如何在動畫結束時開始活動

[英]How to start activity on animation end

這是我的第一個應用程序,我需要在動畫結束時開始新的活動。 我需要做什么? 我的代碼:

package com.lineage.goddess;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

public class LineageSplashActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        startAnimation();
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    }

    private void startAnimation() {
        // TODO Auto-generated method stub
        TextView logo1= (TextView) findViewById(R.id.TextView1);
        Animation fade1= AnimationUtils.loadAnimation(this, R.anim.fade_in);
        logo1.startAnimation(fade1);
        TextView logo2= (TextView) findViewById(R.id.TextView2);
        Animation fade2= AnimationUtils.loadAnimation(this, R.anim.fade_in);
        logo2.startAnimation(fade2);
        TextView logo3= (TextView) findViewById(R.id.TextView3);
        Animation fade3= AnimationUtils.loadAnimation(this, R.anim.fade_in);
        logo3.startAnimation(fade3);
        TextView logo4= (TextView) findViewById(R.id.TextView4);
        Animation fade4= AnimationUtils.loadAnimation(this, R.anim.fade_in2);
        logo4.startAnimation(fade4);}
         public void onAnimationEnd() {
             Intent i = new Intent( LineageSplashActivity.this, LineageMenuActivity.class );
             LineageSplashActivity.this.startActivity( i );
;
        }
    }

將AnimationListener設置為要用於啟動Activity的動畫。

myAnimation.setAnimationListener(new AnimationListener() {
    public void onAnimationStart(Animation animation) {}
    public void onAnimationRepeat(Animation animation) {}
    public void onAnimationEnd(Animation animation) {
        Intent i = new Intent( LineageSplashActivity.this, LineageMenuActivity.class );
        LineageSplashActivity.this.startActivity( i );
    }
}

所以,你的代碼將是這樣的:

package com.lineage.goddess;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

public class LineageSplashActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        startAnimation();
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    }

    private void startAnimation() {
        // TODO Auto-generated method stub
        TextView logo1= (TextView) findViewById(R.id.TextView1);
        Animation fade1= AnimationUtils.loadAnimation(this, R.anim.fade_in);
        logo1.startAnimation(fade1);
        TextView logo2= (TextView) findViewById(R.id.TextView2);
        Animation fade2= AnimationUtils.loadAnimation(this, R.anim.fade_in);
        logo2.startAnimation(fade2);
        TextView logo3= (TextView) findViewById(R.id.TextView3);
        Animation fade3= AnimationUtils.loadAnimation(this, R.anim.fade_in);
        logo3.startAnimation(fade3);
        TextView logo4= (TextView) findViewById(R.id.TextView4);
        Animation fade4= AnimationUtils.loadAnimation(this, R.anim.fade_in2);
        face4.setAnimationListener(new AnimationListener() {
            public void onAnimationStart(Animation animation) {}
            public void onAnimationRepeat(Animation animation) {}
            public void onAnimationEnd(Animation animation) {
                Intent i = new Intent( LineageSplashActivity.this, LineageMenuActivity.class );
                LineageSplashActivity.this.startActivity( i );
            }
        }    

        logo4.startAnimation(fade4);    
    }
}

你的代碼使我的眼睛流血,所以我盡可能多地修復它:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;

public class LineageSplashActivity extends Activity implements AnimationListener {

    private static final int NUMBER_OF_ANIMATIONS = 4;
    private int animationFinishedCount = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

        startAnimations();
    }

    private void startAnimations() {
        Animation fade = AnimationUtils.loadAnimation(this, R.anim.fade_in);
        fade.setAnimationListener(this);    

        findViewById(R.id.TextView1).startAnimation(fade);
        findViewById(R.id.TextView2).startAnimation(fade);
        findViewById(R.id.TextView3).startAnimation(fade);
        findViewById(R.id.TextView4).startAnimation(fade);
    }


    @Override
    public void onAnimationEnd(Animation animation) {
            // When all animations have finished - start the next activity
        if(++animationFinishedCount == NUMBER_OF_ANIMATIONS){
            Intent intent = new Intent( this, LineageMenuActivity.class );
            startActivity( intent );
        }
    }

    @Override
    public void onAnimationStart(Animation animation) {
        // Nothing
    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // Nothing
    }
}

如果它不是錯誤類型,並且您實際上需要為第4個文本視圖使用不同的動畫,則可以刪除計數檢查並將動畫偵聽器添加到該單個動畫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM