【问题标题】:Activity transition black screen活动过渡黑屏
【发布时间】:2019-07-25 01:08:46
【问题描述】:

所以我有 WelcomeActivity -> HomeActivity 并使用 finish()/supportFinishAfterTransition() 关闭 WelcomeActivity。我想做一个 slideTransition 或一个 fadeTransition (对其他建议开放)。

我对此进行了研究,事实证明有两种以上的方法:使用 anim.xml 文件的 overridePendingTransition 或使用 transition.xml 文件的 Transitions(来自 android docs)。 ..

我都试过了,但都给了我不想要的结果:

  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:(我尝试在 overridePendingTransaction 之前完成)

    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 是否在推动动画过渡以开始新活动?

【问题讨论】:

    标签: android android-animation


    【解决方案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

    【讨论】:

    • 我认为你搞错了:slide_in 和 slide_out 都从 -100 变为 0
    • 抱歉,我忘记编辑了。复制时我错了,我现在编辑一下
    • 是的,这很好,但我认为这不适合我的情况,因为我要从没有导航栏的屏幕转到有导航栏的屏幕,所以看起来有点奇怪。至于淡入淡出,如果没有黑屏,我仍然无法让它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    相关资源
    最近更新 更多