Activity 过渡黑屏
Activity transition black screen
所以我有 WelcomeActivity -> HomeActivity 并用 finish()/supportFinishAfterTransition()
关闭 WelcomeActivity。我想执行 slideTransition 或 fadeTransition(对其他建议开放)。
我对此进行了研究,结果证明有 2 种以上的方法:使用 overridePendingTransition
使用 anim.xml 文件或使用 Transitions(来自 android docs ) 使用 transition.xml 个文件...
我都试过了,都给了我不想要的结果:
- 对于动画:我得到这个丑陋的中间过渡黑屏:
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()
- 对于转换:我做不到,所以 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 是否将过渡推到开始新活动的动画上?
我经常做的是开始activity(任何你想要的方式,方式是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>
然后我像这样开始activity(这是java):
startActivity(MainActivity.this, SecondActivity.class);
overridePendingTransition(R.anim.slide_in_right.xml, R.anim.slide_in_left.xml);
finish();
使用这个,activity退出让位给新的顺利从右到左。
对于黑屏,在 AndroidManifest.xml
文件
中将 activity 的主题设置为半透明
android:theme="@android:style/Theme.Translucent"
所以你的代码将是这样的
<activity android:name=".Activity"
android:theme="@android:style/Theme.Translucent" />
黑屏答案取自:
所以我有 WelcomeActivity -> HomeActivity 并用 finish()/supportFinishAfterTransition()
关闭 WelcomeActivity。我想执行 slideTransition 或 fadeTransition(对其他建议开放)。
我对此进行了研究,结果证明有 2 种以上的方法:使用 overridePendingTransition
使用 anim.xml 文件或使用 Transitions(来自 android docs ) 使用 transition.xml 个文件...
我都试过了,都给了我不想要的结果:
- 对于动画:我得到这个丑陋的中间过渡黑屏:
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()
- 对于转换:我做不到,所以 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 是否将过渡推到开始新活动的动画上?
我经常做的是开始activity(任何你想要的方式,方式是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>
然后我像这样开始activity(这是java):
startActivity(MainActivity.this, SecondActivity.class);
overridePendingTransition(R.anim.slide_in_right.xml, R.anim.slide_in_left.xml);
finish();
使用这个,activity退出让位给新的顺利从右到左。
对于黑屏,在 AndroidManifest.xml
文件
android:theme="@android:style/Theme.Translucent"
所以你的代码将是这样的
<activity android:name=".Activity"
android:theme="@android:style/Theme.Translucent" />
黑屏答案取自: