Вход и выход Переход между действиями не работает гладко в AndroidX - PullRequest
0 голосов
/ 07 июня 2018

Что я хочу сделать

Создание плавного перехода / анимации между 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 остается там в фоновом режиме, но без окна.Этого не должно быть.

Есть идеи, как решить проблему?

Примечание:

Оба в SplashActivity & LoginActivity, Iне может использовать классы из androidx.transition.*.

Это из-за того, что androidx.AppCompatActivity возвращает android.view.window, и я должен использовать классы из android.transition.*, который работает, но я не уверенесли это причины ошибок.

...