Что я хочу сделать
Создание плавного перехода / анимации между 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
.Это не то, что я ожидал - Когда я закрываю LoginActivity, просмотр компонентов в
LoginFragment
остается там в фоновом режиме, но без окна.Этого не должно быть.
Есть идеи, как решить проблему?
Примечание:
Оба в SplashActivity
& LoginActivity
, Iне может использовать классы из androidx.transition.*
.
Это из-за того, что androidx.AppCompatActivity
возвращает android.view.window, и я должен использовать классы из android.transition.*
, который работает, но я не уверенесли это причины ошибок.