我想做什么
在SplashActivity
&之间平滑过渡/动画LoginActivity
。
(两个活动都使用androidx.appcompat.app.AppCompatActivity)
项目依赖关系
implementation 'com.google.android.material:material:1.0.0-alpha3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha3'
implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
SplashActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
with(window) {
requestFeature(Window.FEATURE_CONTENT_TRANSITIONS)
exitTransition = Slide(Gravity.BOTTOM)
}
//Handler codes waiting for around 700ms...
}
fun startLoginActivity() {
// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
startActivity(intent, ActivityOptions
.makeSceneTransitionAnimation(this)
.toBundle())
} else {
//Swap without transition
startActivity(intent)
}
finishAfterTransition()
}
LoginActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
with(window) {
requestFeature(Window.FEATURE_CONTENT_TRANSITIONS)
allowEnterTransitionOverlap = true
enterTransition = Slide(Gravity.TOP)
exitTransition = Explode()
}
setContentView(R.layout.login_activity)
if (savedInstanceState == null) {
supportFragmentManager.transaction(now = true) {
replace(R.id.loginContainer, LoginFragment.newInstance())
}
}
}
发生了什么
SplashActivity.startLoginActivity()
时,窗口淡入淡出并关闭,然后使用LoginActivity
重新打开。这不是我的预期LoginFragment
中的视图组件会在后台停留,但没有窗口。这不应该发生。 有关如何解决问题的想法吗?
注意:的
SplashActivity
& LoginActivity
,我无法使用androidx.transition.*
中的类。
因为androidx.AppCompatActivity
正在返回android.view.window,我必须使用来自android.transition.*
的类,这是有效的,但我不确定它是否有效错误的原因。