从Android中的上一个活动中淡出活动

Kar*_*i17 18 android android-activity

我目前正在开发Android应用程序,我的启动活动存在一些问题.我希望我的主要活动从我的飞溅活动淡入,而不是从黑屏.我的启动和主要活动都使用相同的背景图像,所以如果我做一个fade_in/fade_out组合,它看起来很奇怪,因为在转换过程中背​​景类型会稍微消失.

这里的想法是我必须使用我的徽标版本:正常和发光.我希望我的主要活动淡入,所以我的发光徽标覆盖了我的正常徽标,导致整洁的小"开启"效果.以下代码从黑屏中消失,这是不理想的.

/**
 * Pause Activity
 */
@Override
protected void onPause()
{
    super.onPause();
    finish();
    overridePendingTransition(android.R.anim.fade_in, 0);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

创建我自己的fade_out动画以保持1.0 alpha级别(从1.0到1.0)并添加android:fillAfter="true"到我的初始动画集修复了问题.

Lum*_*mis 37

这是关于事物的顺序.这是一个在3秒后淡入下一个活动的例子:

new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {

    //Create an intent that will start the main activity.
    Intent mainIntent = new Intent(SplashActivity.this, MainMenuActivity.class);
    SplashActivity.this.startActivity(mainIntent);

    //Finish splash activity so user cant go back to it.
    SplashActivity.this.finish();

    //Apply splash exit (fade out) and main entry (fade in) animation transitions.
    overridePendingTransition(R.anim.mainfadein, R.anim.splashfadeout);
  }
}, 3000);
Run Code Online (Sandbox Code Playgroud)

请注意,这里有两个动画淡入淡出.

mainfadein.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:fromAlpha="0.0" 
        android:toAlpha="1.0" 
        android:duration="700" />
Run Code Online (Sandbox Code Playgroud)

splashfadeout.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
        android:interpolator="@android:anim/decelerate_interpolator"
        android:zAdjustment="top" 
        android:fromAlpha="1.0" 
        android:toAlpha="0.0" 
        android:duration="700" />
Run Code Online (Sandbox Code Playgroud)

  • 很高兴听到,我还为未来的访客添加了xml.因此,如果在spalsh淡出时我们设置android:fillAfter ="true"和alpha从1.0到1.0我们得到所谓的交叉渐变效果.很高兴知道! (2认同)

Tai*_*aig 30

我建议不要使用经典的交叉淡入淡出,而是在没有动画的情况下显示新的Activity,然后淡出当前的Activity.这看起来和感觉更清晰,并解决了一些小问题,当您在动画开始时从后台打开应用程序时,您可以看到启动器/底层应用程序.

my_splash_fade_out.xml

<?xml version="1.0" encoding="utf-8"?>

<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="750"
    android:fromAlpha="1.0"
    android:interpolator="@android:interpolator/accelerate_cubic"
    android:startOffset="250"
    android:toAlpha="0.0"
    android:zAdjustment="top" />
Run Code Online (Sandbox Code Playgroud)

我正在添加一个startOffset这里给新创建的Activity一点开头,因为它相当沉重.

MySplashActivity.java

...
startActivity( ... );
finish();
overridePendingTransition( 0, R.anim.screen_splash_fade_out );
Run Code Online (Sandbox Code Playgroud)

预习

预览动画