活动过渡黑屏

时间:2019-03-03 16:33:00

标签: android android-animation

所以我有WelcomeActivity-> HomeActivity并用finish()/supportFinishAfterTransition()关闭WelcomeActivity。我想做一个slideTransition或fadeTransition(顺便提一下其他建议)。

我已经对此进行了研究,事实证明,有2种以上的方式可以做到这一点:使用overridePendingTransition使用anim.xml文件,或者使用Transitions(来自android docs)使用transition .xml文件...

我都尝试过并且都给了我不想要的结果:

  1. 关于动画:我看到了这个丑陋的中间过渡黑屏:

fade_in.xml:

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

fade_out.xml:

    <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:zAdjustment="top"
       android:duration="300" />

WelcomeActivity :(我已经尝试在overlayPendingTransaction之前完成操作)

    startActivity(Intent(this, HomeActivity::class.java))
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out)
    finish()
  1. 用于过渡:我无法做到,因此WelcomeActivity正确关闭:它在动画开始之前关闭,或者根本不关闭。我正在关注android docs。.我也尝试过:

style.xml

    <item name="android:windowActivityTransitions">true</item>
    <item name="android:windowEnterTransition">@transition/enter_fade</item>
    <item name="android:windowExitTransition">@transition/exit_fade</item>

我的其他问题是我应该采用哪种方法? Google是否在推动动画过渡,以启动新活动?

1 个答案:

答案 0 :(得分:1)

我一直要做的是开始一项活动(任何方式,listed here)。
我使用这两个文件来进行幻灯片过渡:

slide_out_left.xml:

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

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

slide_in_right.xml:

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

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

然后我开始这样的活动(这是):

startActivity(MainActivity.this, SecondActivity.class);
overridePendingTransition(R.anim.slide_in_right.xml, R.anim.slide_in_left.xml);
finish();

使用此功能,活动从右向左平滑地退出到新活动。
对于黑屏,请在AndroidManifest.xml文件中将该活动的主题设置为半透明

android:theme="@android:style/Theme.Translucent"

所以您的代码将是这样

<activity android:name=".Activity"
        android:theme="@android:style/Theme.Translucent" />

黑屏的答案来自:https://stackoverflow.com/a/6468734/9819031