无法启动 activity 动画 android/java

can't start activity with animation android/java

第一个activity的动画在我用startActivity的时候没有效果,不知道有什么奇怪的。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getSupportActionBar().hide();

        ImageView img = (ImageView) findViewById(R.id.splash);
        img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000);
        Intent intent = new Intent(getApplicationContext(), NextActivity.class);
        startActivity(intent);
    }
}

我希望您尝试显示您的 APP 徽标的缩放和旋转动画一段时间,然后尝试启动另一个 Activity。

由于您正在启动另一个 activity ,在 Imageview 上启动动画之前,ActivityManager 将切换到下一个动画,因此您看不到动画, 解决方案是将 Animationlistner 设置为提供给 ImageView 的 ViewPropertyAnimator 对象,并在 onAnimationEnd() 回调中启动主要 Activity。

代码片段如下:

    img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000).setListener(new AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animator animation) {
            Intent intent=new Intent(getApplicationContext(),NextActivity.class);
            startActivity(intent);

        }

        @Override
        public void onAnimationCancel(Animator animation) {
            // TODO Auto-generated method stub

        }
    });

检查这个,

Intent intent=new Intent(this,NextActivity.class);
startActivity(intent);

使用这个。

    private Handler handlerImage;
    private Runnable runnableImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getSupportActionBar().hide();

    ImageView img= (ImageView) findViewById(R.id.splash);
    img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000);
    handlerImage = new Handler();
    runnableImage = new Runnable() {
        @Override
        public void run() {
            Intent intent=new Intent(getApplicationContext(),NextActivity.class);
            startActivity(intent);
        }
    };
    handlerImage.postDelayed(runnableImage, 3000);

}



@Override
protected void onDestroy() {
    super.onDestroy();
    if (handlerImage != null) {
        handlerImage.removeCallbacks(runnableImage);
    }

}

@Zakaria Ait Ouchrif,

您可以使用 Activity overridePendingTransition() 方法与两个 xml in 和 out Animation。

您可以在 XML 资源文件中定义简单的过渡动画。

也可以参考this tutorial