使用sharedElements进行的片段过渡已停止在Anrdoid 9上运行

时间:2019-04-07 21:26:13

标签: android android-fragments material-design

我有一个回收站视图->详细信息视图流程。过渡名称在列表中是唯一的,并且与详细信息片段中的过渡名称匹配。应该移动两个视图,而不是像其他所有东西一样淡入/淡出。在将目标API更改为26之前,我的动画一直正常工作。在API 26上,共享视图跳至其“结束”状态而没有任何动画。其他所有内容都是动画属性。

我尝试遵循一些指南都没有用。我想念什么?这是我的代码:

private fun showDetails(edited: EditedAlarm) {
    fragmentManager.findFragmentById(R.id.main_fragment_container)?.lollipop {
        exitTransition = Fade()
    }

    val detailsFragment = AlarmDetailsFragment().apply {
        arguments = Bundle()
        arguments.putInt(Intents.EXTRA_ID, edited.id())
        arguments.putBoolean(Store.IS_NEW_ALARM, edited.isNew)
    }.lollipop {
        val enterSlide = Slide()

        if (edited.holder.isPresent()) {
            val viewHolder = edited.holder.get()
            enterSlide.epicenterCallback = viewHolder.epicenter()
            enterSlide.slideEdge = Gravity.TOP
        }

        enterTransition = TransitionSet().addTransition(enterSlide).addTransition(Fade())

        val move = TransitionInflater.from(this@AlarmsListActivity).inflateTransition(android.R.transition.move)
        sharedElementEnterTransition = move
        sharedElementReturnTransition = move
    }

    fragmentManager.beginTransaction()
            .lollipop {
                val viewHolder = edited.holder.get()
                addSharedElement(viewHolder.digitalClock(), viewHolder.digitalClock.transitionName)
                addSharedElement(viewHolder.container(), viewHolder.container().transitionName)
            }
            .replace(R.id.main_fragment_container, detailsFragment)
            .commitAllowingStateLoss()
}

1 个答案:

答案 0 :(得分:0)

经过一番挖掘,我找到了解决方法:

使用支持库中的SupportFragmentManager。即使在API版本26中未弃用片段,它们也并非始终有效。