【问题标题】:Exit transition in translucent activity半透明活动中的退出过渡
【发布时间】:2020-05-03 17:23:55
【问题描述】:

我正在尝试在半透明活动时进行简单的淡出过渡。活动风格为:

<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>

淡入进入转换工作顺利,但在调用finishAfterTransition() 后淡出退出转换只是在我当前(半透明)活动和前一个活动之间闪烁。

我让它在布局上执行常规动画,然后完成活动。但我真的很想知道如何使用活动的过渡框架来做到这一点。

【问题讨论】:

  • 你试过&lt;item name="android:windowExitTransition"&gt;@transition/exit&lt;/item&gt;吗?
  • 是的,它具有相同的闪烁效果。

标签: android android-transitions


【解决方案1】:
You can implement fade-in and fade-out animation by this way also.     
 Create anim folder under res folder, In anim folder create two xml file.
     -------------------------------------------------------------------------------------
     fadein.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="2000" />
     -------------------------------------------------------------------------------------

       fadeout.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="1.0" android:toAlpha="0.0" android:
    duration="2000" />

     -------------------------------------------------------------------------------------
     Add this on override method of onCreate and onStart.

     overridePendingTransition(R.anim.fadein, R.anim.fadeout);


     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            overridePendingTransition(R.anim.fadein, R.anim.fadeout);

            }


     @Override
        protected void onStart() {

            super.onStart();

            overridePendingTransition(R.anim.fadein, R.anim.fadeout);
           }

【讨论】:

  • 谢谢@vishal-sharma。我知道我可以通过这种方式实现。但我想知道如何使用过渡框架。我想知道为什么window.exitTransition = Fade(Fade.MODE_OUT) 在半透明活动的情况下不起作用。
【解决方案2】:

在对半透明活动执行转换时,默认 exitTransition 的行为继承自 enterTransition,实际上,它反转了转换,我们无法覆盖它。

幸运的是,还有一个可用的属性在 Activity 的关闭转换中起着重要作用,即returnTransition,它是用于在窗口准备关闭时将视图移出场景的所需转换。

现在尝试使用

而不是 window.exitTransition = Fade(Fade.MODE_OUT)

window.returnTransition = Fade(Fade.MODE_OUT)

或者您可以在 styles.xml

中定义的活动主题中覆盖它

&lt;item name="android:windowReturnTransition"&gt;@transition/exit_transition&lt;/item&gt;

您的 exit_transition.xml 将在哪里

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <fade
            android:duration="@android:integer/config_shortAnimTime"
            android:fadingMode="fade_out" />
</transitionSet>

res/transition 目录中。你已经准备好摇滚了!

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多