我可以更改Android startActivity()过渡动画吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (45)

我正在开展一项活动,宁愿让一个阿尔法淡入startActivity(),一个淡出finish()。我如何在Android SDK中解决这个问题?

提问于
用户回答回答于

在执行finish()的同一语句中,也要在那里执行你的动画。然后,在新的活动中,运行另一个动画。看到这个代码:

fadein.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fillAfter="true">
     <alpha android:fromAlpha="1.0" 
            android:toAlpha="0.0"
            android:duration="500"/> //Time in milliseconds
</set>

及:

private void finishTask() {
    if(blabbla==blablabla){
        finish();
        runFadeAnimation();
    }
}

private void runFadeInAnimation() {
    Animation a = AnimationUtils.loadAnimation(this, R.anim.fadein);
    a.reset();
    LinearLayout ll = (LinearLayout) findViewById(R.id.yourviewhere);
    ll.clearAnimation();
    ll.startAnimation(a);   
}

fadeout.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"
           android:fillAfter="true">
  <alpha android:fromAlpha="0.0"
         android:toAlpha="1.0"
         android:duration="500"/>
</set>

用户回答回答于

从API级别5开始,你可以立即调用overridePendingTransition来指定明确的过渡动画:

startActivity();
overridePendingTransition(R.anim.hold, R.anim.fade_in);

要么:

finish();
overridePendingTransition(R.anim.hold, R.anim.fade_out);

扫码关注云+社区