2012-02-05 61 views
18

我目前正在开发一个Android应用程序,我遇到了一些与我的splash活动有关的问题。我希望我的主要活动从我的飞溅活动中淡入,而不是从黑屏中淡出。我的飞溅和主要活动都使用相同的背景图像,所以如果我执行fade_in/fade_out组合,它看起来很奇怪,因为在过渡期间背景会淡化一点。淡入从前活动Android中的活动

这里的想法是我有我的标志的版本:正常和发光。我希望我的主要活动淡入,所以我的发光徽标超过了我的正常徽标,导致整齐的“打开”效果。下面的代码从黑屏中淡入,这并不理想。

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

编辑:

创建我自己的fade_out动画保留了1.0α水平(1.0〜1.0),并加入android:fillAfter="true"我解决了该问题飞溅动画集。

回答

36

这是关于事物的顺序。这是在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); 

注意的是,这里有一两个动画淡入和淡出。

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" /> 

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" /> 
+0

槽糕......这与我当前的代码相同的问题,即它关系到一个黑色的屏幕前的衰落如果我省略了fade_out,或者看起来有点怪,如果我把它放进去。我尝试实现我自己的fade_out,它从1.0 alpha转换为1.0 alpha,但原始日志o在新的淡入之前仍然流离失所。 这里的目标是用主要活动“覆盖”飞溅活动,使其看起来像其他视图出现时徽标开始发光。 – Karai17 2012-02-05 15:54:01

+0

啊哈!我修好了它! – Karai17 2012-02-05 16:32:40

+2

很高兴听到,我还为未来的访问者添加了xml。因此,如果在spalsh中淡出,我们将android:fillAfter =“true”和alpha从1.0.设置为1.0,我们得到了所谓的淡入淡出效果。很高兴知道! – Lumis 2012-02-05 18:00:55

23

我建议对经典的淡入淡出,而是显示新的活动没有动画,只是淡出目前的活动。这看起来&感觉更清洁,并解决了一些小问题,当您在动画开始时从背景中打开应用程序时,您可以看到启动程序/底层应用程序。

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" /> 

我加入这里startOffset给新创建的活动有点过了一个良好的开端,因为它是相当沉重的。

MySplashActivity.java

... 
startActivity(...); 
finish(); 
overridePendingTransition(0, R.anim.screen_splash_fade_out); 

预览

Preview animation

+0

这样好多了,谢谢! – George 2016-01-27 23:32:37

+0

好看又简洁。 – 2016-06-20 09:34:36