在AndroidX中无法顺利运行的活动之间进入和退出转换

时间:2018-06-07 05:10:25

标签: android android-animation androidx

我想做什么

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())
        }
    }
}

发生了什么

  1. 调用SplashActivity.startLoginActivity()时,窗口淡入淡出并关闭,然后使用LoginActivity重新打开。这不是我的预期
  2. 当我关闭LoginActivity时,LoginFragment中的视图组件会在后台停留,但没有窗口。这不应该发生。
  3. 有关如何解决问题的想法吗?

    注意:

    SplashActivity& LoginActivity,我无法使用androidx.transition.*中的类。

    因为androidx.AppCompatActivity正在返回android.view.window,我必须使用来自android.transition.*的类,这是有效的,但我不确定它是否有效错误的原因。

0 个答案:

没有答案