繁体   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